Envoi de courrier via SMTP en C # en utilisant BCC sans TO
Question
J'essaie d'utiliser la classe System.Net.Mail.MailMessage
en C # pour créer un courrier électronique qui est envoyé à une liste d'adresses électroniques, le tout via BCC
. Je ne souhaite pas inclure d'adresse TO
, mais il me semble que je dois le faire car j'obtiens une exception si j'utilise une chaîne vide pour l'adresse TO
dans . MailMessage
constructeur. L'erreur indique:
ArgumentException
The parameter 'addresses' cannot be an empty string.
Parameter name: addresses
Il est sûrement possible d’envoyer un courrier électronique en utilisant uniquement Cci
car il ne s’agit pas d’une limitation du protocole SMTP.
Y a-t-il un moyen de contourner cela?
La solution
Je pense que si vous commentez l'intégralité de la ligne emailMessage.To.Add (sendTo);
, le message contenant le champ To
sera vide.
Autres conseils
Faites la même chose que pour les envois de courrier internes, où vous ne voulez pas que les gens répondent tout le temps.
Envoyez-le à vous-même (ou à un compte factice), puis ajoutez votre liste BCC.
Vous devez inclure une adresse TO. Envoyez-le simplement à un "courrier indésirable". adresse de messagerie qui ne vous dérange pas de recevoir du courrier.
Il n'est même pas nécessaire que ce soit une vraie adresse électronique. J'utilise généralement Mailer@Nomentreprise.com
pour TO
et NoReply @ CompanyName.
pour FROM
.
N'appelez pas la méthode Add sur la propriété To.
Doit avoir une adresse de destination. Il en a été ainsi depuis la version originale de sendmail dans les années 80 et tous les logiciels de courrier SMTP, à ma connaissance, ont les mêmes exigences. Vous pouvez simplement utiliser une adresse fictive pour.
Vous pouvez utiliser une fausse adresse temporaire, puis la supprimer juste après:
MailMessage msg = new MailMessage(from, "fake@example.com");
msg.To.Clear();
foreach (string email in bcc.Split(';').Select(x => x.Trim()).Where(x => x != ""))
{
msg.Bcc.Add(email);
}
Je pense que vous essayiez de faire quelque chose comme:
var msg = new MailMessage("no-reply@notreal.com", "");
C'est pourquoi vous voyez le message d'erreur.
Au lieu de cela, essayez quelque chose comme ceci:
MailMessage msg = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.notreal.com");
msg.From = new MailAddress("no-reply@notreal.com");
//msg.To.Add("target@notreal.com"); <--not needed
msg.Bcc.Add("BCCtarget@notreal.com");