Je ne peux pas envoyer le courrier en utilisant le client smtp . Voici le code:
SmtpClient client=new SmtpClient("Host");
client.Credentials=new NetworkCredential("username", "password");
MailMessage mailMessage = new MailMessage();
mailMessage.from="[email protected]";
mailMessage.To.Add("[email protected]");
mailMessage.body="body";
mailMessage.subject="subject";
client.Send(mailMessage);
Le problème est que, lorsque j'utilise ce code dans une application ASP.NET, je ne reçois aucun courrier. Quand je suis sur asp.net, je change l'adresse de courrier électronique en nom d'utilisateur indiqué dans NetworkCredential, je reçois des mails.
Mais dans l'application Windows C #, je peux recevoir des emails, même si l'adresse email de l'expéditeur n'est pas valide.
J'ai compris que la définition de la propriété SmtpClient Credentials avant celle de 'UseDefaultCredentials = false' UseDefaultCredentials = false
entraîne l'ignorance des informations d'identification.
Échoue:
SmtpClient smtp = new SmtpClient;
smtp.Credentials = new NetworkCredential("user","pass");
smtp.UseDefaultCredentials = false;
Travaux:
SmtpClient smtp = new SmtpClient;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("user","pass");
Allez comprendre.
Cela signifie que votre serveur de messagerie n'autorise pas Mail-Relay. Votre serveur de messagerie vous permet uniquement d'envoyer un courrier électronique à partir d'identifiant email authentifié. En règle générale, ceci est fait pour empêcher l'envoi de courriers sous différentes identités que celle authentifiée.
Essaye ça :
MailMessage mail = new MailMessage("emailfrom","emailto");
mail.From = new MailAddress("emailfrom");
mail.Subject = txtsbjct.Text;
string Body = txtmsg.Text;
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
smtp.Credentials = new System.Net.NetworkCredential("youremail", "yourpassword");
smtp.EnableSsl = true;
smtp.Send(mail);
txtemail.Text = "";
txtmsg.Text = "";
txtsbjct.Text = "";
Label1.Text = "your email has been send";
mail = null;
smtp = null;
La réponse courte: N'utilisez pas .net la classe de client SMTP interne - utilisez MailKit .
La réponse longue:
[System.Obsolete ("SmtpClient et son réseau de types sont mal conçus, nous vous recommandons vivement d’utiliser https://github.com/jstedfast/MailKit } _ et https://github.com/ jstedfast/MimeKit à la place ")] Classe publique SmtpClient: IDisposable
Je n'ai volontairement pas copié-collé les exemples de la documentation car la documentation peut changer avec le temps et il est préférable de la lire.