2010-03-04 12 views
5

Je viens d'entendre Joel & Jeff parle de Sender ID dans son numéro de podcast 83, et il m'est apparu que c'est exactement ce dont j'ai besoin pour un site sur lequel je travaille. Environ 90% de tous les e-mails envoyés depuis le serveur sont renvoyés ou similaires, probablement parce que le serveur n'est pas "validé".Comment implémenter l'ID expéditeur lors de l'envoi de mails via C#?

J'ai un enregistrement SPF en place pour le serveur, mais c'est aussi à peu près tout. Puisque StackOverflow a résolu ces problèmes, je suppose que l'ID de l'expéditeur doit être la voie à suivre. Pour autant que je sache de la part de wikipedia, il faut que vous modifiiez l'en-tête du courrier lors de l'envoi de mails. Comment procéder en C#?

De même que devrais-je besoin de configurer DNS sage, etc. pour que cela fonctionne?

Ou suis-je sur une mauvaise piste ici? Editer: J'utilise la classe standard SmtpClient en C# pour l'envoi de mails, et j'inclue à la fois un texte en clair et une version HTML du mailbody.

+0

Vous avez ajouté le spf à la configuration DNS de vos domaines? – curtisk

+0

Oui, j'ai bien compris :-) – Steffen

Répondre

4

Si vous envoyez des messages au nom d'un autre utilisateur et vous voulez qu'il soit acceptée, vous devrez peut-être effectuer les opérations suivantes:

Dans votre objet MailMessage:

mail.To = new MailAddress("[email protected]", "To Someone"); 
mail.From = new MailAddress("[email protected]", "Sending User"); 
mail.Sender = new MailAddress("[email protected]", "Your Server"); 
mail.ReplyTo = new MailAddress("[email protected]", "Sending User"); 

Cela va générer la les en-têtes appropriés requis pour que la validation SPF fonctionne (en supposant que le serveur l'a définie par défaut, ils peuvent choisir quelle partie valider). Cela rendra l'aspect e-mail comme (dans Outlook)

De: Votre serveur au nom de l'envoi de l'utilisateur
Pour: Quelqu'un

La plupart des protocoles SPF valideront l'en-tête Sender: pour déterminer si la L'envoi d'un domaine autorise ou le refuse, cela doit donc provenir de votre domaine, quel que soit l'expéditeur.

En outre, vous pouvez vouloir vérifier que vous avez your SPF records set up right et que votre adresse IP ne sont pas sur un blacklist comme spamhaus. La vérification du texte de retour réel de l'appel vous indiquera généralement pourquoi il est bloqué avec une erreur 5.something.

+0

Je n'ai pas la partie Expéditeur dans mon code, donc ça pourrait être utile. Aussi, je vais vérifier votre lien pour les enregistrements SPF et m'assurer que j'ai bien compris. Merci :-) – Steffen

2

Je ne vois pas pourquoi vous devez apporter des modifications d'en-tête pour l'ID expéditeur/SPF. Une fois votre enregistrement en place, vous devez simplement vous assurer que vos messages sortants sont From: un domaine qui a une adresse IP d'envoi publiée (publique) correspondante dans votre enregistrement SPF dans DNS. Cependant, je pense que vous pourriez examiner MailMessage.Headers pour voir quels en-têtes sont envoyés (ou envoyer des messages à vous-même) afin de déterminer en fonction de votre type d'enregistrement SPF comment les serveurs de courrier recevront le domaine correspondant à votre enregistrement SPF.