Отправка почты с использованием SmtpClient в .net
Я не могу отправить почту с помощью smtp-клиента.
вот код:
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);
Проблема в том, что когда я использую этот код в приложении ASP.NET, я не получаю никаких писем. Когда в asp.net я меняю адрес почты на имя пользователя, заданное в NetworkCredential, я получаю письма.
Но в приложении Windows С# я могу получать электронные письма, даже если адрес электронной почты отправителя недействителен.
Ответы
Ответ 1
Я выяснил, что установка свойства CredtSmTML-компонентов перед установкой UseDefaultCredentials = false приводит к игнорированию учетных данных.
Не удается:
SmtpClient smtp = new SmtpClient;
smtp.Credentials = new NetworkCredential("user","pass");
smtp.UseDefaultCredentials = false;
Работает:
SmtpClient smtp = new SmtpClient;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("user","pass");
Показать рисунок.
Ответ 2
Это означает, что ваш почтовый сервер не разрешает Mail-Relay. Ваш почтовый сервер позволяет отправлять почту с аутентифицированного идентификатора электронной почты как имя пользователя. Как правило, это делается для предотвращения отправки писем в виде разных идентификаторов, отличных от аутентифицированного.
Ответ 3
Попробуйте следующее:
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;
Ответ 4
void sendEmail(string strFrom
, string strTo
, string strSubject
, string strBody)
{
MailMessage objMailMessage = new MailMessage();
System.Net.NetworkCredential objSMTPUserInfo =
new System.Net.NetworkCredential();
SmtpClient objSmtpClient = new SmtpClient();
try
{
objMailMessage.From = new MailAddress(strFrom);
objMailMessage.To.Add(new MailAddress(strTo));
objMailMessage.Subject = strSubject;
objMailMessage.Body = strBody;
objSmtpClient = new SmtpClient("172.0.0.1"); /// Server IP
objSMTPUserInfo = new System.Net.NetworkCredential
("User name", "Password","Domain");
objSmtpClient.Credentials = objSMTPUserInfo;
objSmtpClient.UseDefaultCredentials = false;
objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
objSmtpClient.Send(objMailMessage);
}
catch (Exception ex)
{ throw ex; }
finally
{
objMailMessage = null;
objSMTPUserInfo = null;
objSmtpClient = null;
}
}