我需要使用Gmail SMTP发送邮件,但它显示Failure sending mail.
,
<system.net>
<mailSettings>
<smtp from="myn@gmail.com ">
<network host="smtp.gmail.com" defaultCredentials="false"
port="587" userName ="myn@gmail.com" password="pass@123" />
</smtp>
</mailSettings>
</system.net>
public string SendEmail(bool readWebConfig)
{
string emailStatus = string.Empty;
string from = "myn@gmail.com"; //Replace this with your own correct Gmail Address
//Replace this with the Email Address to whom you want to send the mail
string to = "myn@yahoo.com";
string cc = "";
string bcc = "";
string fromName = "bryian";
string userName = "myn@gmail.com";
string password = "pass@123";
Attachment attachment = null;
//if you want to send attachment, include the file location
// Attachment attachment = new Attachment("file location");
SmtpClient client = new SmtpClient();
client.EnableSsl = true; //Gmail works on Server Secured Layer
if (!readWebConfig)
{
client.Credentials = new System.Net.NetworkCredential(userName, password);
client.Port = 587; // Gmail works on this port
client.Host = "smtp.gmail.com"; //hotmail: smtp.live.com
}
try
{
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress(from, fromName);
mail.ReplyTo = new MailAddress(from, fromName);
mail.Sender = mail.ReplyTo;
if (to.Contains(";"))
{
string[] _EmailsTO = to.Split(";".ToCharArray());
for (int i = 0; i < _EmailsTO.Length; i++)
{
mail.To.Add(new MailAddress(_EmailsTO[i]));
}
}
else
{
if (!to.Equals(string.Empty))
{
mail.To.Add(new MailAddress(to));
}
}
//CC
if (cc.Contains(";"))
{
string[] _EmailsCC = cc.Split(";".ToCharArray());
for (int i = 0; i < _EmailsCC.Length; i++)
{
mail.CC.Add(new MailAddress(_EmailsCC[i]));
}
}
else
{
if (!cc.Equals(string.Empty))
{
mail.CC.Add(new MailAddress(cc));
}
}
//BCC
if (bcc.Contains(";"))
{
string[] _EmailsBCC = bcc.Split(";".ToCharArray());
for (int i = 0; i < _EmailsBCC.Length; i++)
{
mail.Bcc.Add(new MailAddress(_EmailsBCC[i]));
}
}
else
{
if (!bcc.Equals(string.Empty))
{
mail.Bcc.Add(new MailAddress(cc));
}
}
string message = "this is a test message";
mail.Subject = "test subject";
mail.Body = "<div style=\"font: 11px verdana, arial\">";
mail.Body += message.Replace("\n", "<br />") + "<br /><br />";
mail.Body += "<hr /><br />";
mail.Body += "<h3>Sender information</h3>";
mail.Body += "<div style=\"font-size:10px;line-height:16px\">";
mail.Body += "<strong>Name:</strong> " + fromName + "<br />";
mail.Body += "<strong>E-mail:</strong> " + from + "<br />";
mail.IsBodyHtml = true;
if (HttpContext.Current != null)
{
mail.Body += "<strong>IP address:</strong> " + HttpContext.Current.Request.UserHostAddress + "<br />";
mail.Body += "<strong>User-agent:</strong> " + HttpContext.Current.Request.UserAgent;
}
//attachment
if (attachment != null)
{
mail.Attachments.Add(attachment);
}
client.Send(mail);
emailStatus = "success";
}
}
catch (Exception ex)
{
emailStatus = ex.Message;
} // end try
return emailStatus;
}
protected void Button1_Click(object sender, EventArgs e)
{
string status = SendEmail(false);
Response.Write(status);
}
答案 0 :(得分:0)
我已经尝试过你的代码,它对我来说很好(用我的凭证)。您是否尝试过禁用防火墙或防病毒软件? inner exception
说什么?
禁用步骤:
答案 1 :(得分:0)
尝试在网络标记上设置enableSsl =“true”,如下所示:
<network host="smtp.gmail.com" enableSsl="true" defaultCredentials="false"
port="587" userName ="myn@gmail.com" password="pass@123" />