Отправка почтового использования SmtpClient в .NET

Я не могу отправить почту с помощью smtp клиент. вот код:

SmtpClient client=new SmtpClient("Host");
client.Credentials=new NetworkCredential("username", "password");
MailMessage mailMessage = new MailMessage();
mailMessage.from="sender@gmail.com";
mailMessage.To.Add("recipient@gmail.com");
mailMessage.body="body";
mailMessage.subject="subject";
client.Send(mailMessage);

Проблема состоит в том, что, когда я использую этот код в приложении ASP.NET, я не получаю писем. Когда в asp.net я изменяюсь от почтового адреса до имени пользователя, данного в NetworkCredential, я получаю письма.

Но в приложении Windows C#, я могу получить электронные письма, даже если адрес электронной почты отправителя не допустим.

21
задан John Saunders 15 December 2012 в 08:16
поделиться

2 ответа

Это означает, что ваш почтовый сервер не поддерживает Mail-Relay. Ваш почтовый сервер позволяет отправлять почту только с аутентифицированного адреса электронной почты в качестве имени пользователя. Обычно это делается для предотвращения отправки писем с разными идентификаторами, отличными от аутентифицированного.

1
ответ дан 29 November 2019 в 22:05
поделиться

Попробуйте следующее:

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;
0
ответ дан 29 November 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: