如何通过Gmail通过C#发送电子邮件
尝试通过web服务发送电子邮件时出错。我尝试过启用对不太安全的应用程序的访问,禁用两步验证并通过web浏览器登录帐户。没有一个解决方案对我有效。我仍然得到: 错误:System.Net.Mail.SmtpException:SMTP服务器需要 安全连接或客户端未通过身份验证。服务器 答复是:需要5.5.1身份验证 如何解决此问题如何通过Gmail通过C#发送电子邮件,c#,smtp,gmail,smtpclient,C#,Smtp,Gmail,Smtpclient,尝试通过web服务发送电子邮件时出错。我尝试过启用对不太安全的应用程序的访问,禁用两步验证并通过web浏览器登录帐户。没有一个解决方案对我有效。我仍然得到: 错误:System.Net.Mail.SmtpException:SMTP服务器需要 安全连接或客户端未通过身份验证。服务器 答复是:需要5.5.1身份验证 如何解决此问题 namespace EmailService { public class Service1 : IService1 { pub
namespace EmailService
{
public class Service1 : IService1
{
public string SendEmail(string inputEmail, string subject, string body)
{
string returnString = "";
try
{
MailMessage email = new MailMessage();
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
// set up the Gmail server
smtp.EnableSsl = true;
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential("myemail@gmail.com", "mypassword");
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
// draft the email
MailAddress fromAddress = new MailAddress("cse445emailservice@gmail.com");
email.From = fromAddress;
email.To.Add(inputEmail);
email.Subject = body;
email.Body = body;
smtp.Send(email);
returnString = "Success! Please check your e-mail.";
}
catch(Exception ex)
{
returnString = "Error: " + ex.ToString();
}
return returnString;
}
}
}
只需转到此处:,使用您的电子邮件和密码登录即可,该密码用于以c代码发送邮件,然后选择打开
另外,请转到此链接并单击继续
我还对它进行了一些编辑:
public string sendit(string ReciverMail)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("YourMail@gmail.com");
msg.To.Add(ReciverMail);
msg.Subject = "Hello world! " + DateTime.Now.ToString();
msg.Body = "hi to you ... :)";
SmtpClient client = new SmtpClient();
client.UseDefaultCredentials = true;
client.Host = "smtp.gmail.com";
client.Port = 587;
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Credentials = new NetworkCredential("YourMail@gmail.com", "YourPassword");
client.Timeout = 20000;
try
{
client.Send(msg);
return "Mail has been successfully sent!";
}
catch (Exception ex)
{
return "Fail Has error" + ex.Message;
}
finally
{
msg.Dispose();
}
}
如果上述代码不起作用,请尝试按以下代码进行更改:
SmtpClient client = new SmtpClient();
client.Host = "smtp.gmail.com";
client.Port = 587;
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("YourMail@gmail.com", "YourPassword");
看看这是否有帮助:你有没有尝试ping服务器,如果有,那么Eghbal Sohrabi提到的解决方案是ok@Shubhojitping谷歌服务器?@Johnny,我的意思是说你的防火墙是否没有阻止请求,这种情况有时会发生。只是想确定一下……为什么我可以在本地主机上成功运行类似的代码,但在web服务器上运行时会出现此错误?我已经尝试了这两种方法,但仍然不起作用。结果是
smtp.UseDefaultCredentials=false代码>必须在smtp.Credentials=new System.Net.NetworkCredential(“myemail@gmail.com“,“我的密码”)代码>我只是简单地交换了这些行,一切正常。您的意思是更改smtp.UseDefaultCredentials=true
tosmtp.UseDefaultCredentials=false代码>并将其放置在smtp.Credentials=new System.Net.NetworkCredential(“myemail@gmail.com“,“我的密码”)代码>如果是,请告诉我编辑我的答案。是的,我认为默认凭据必须为false,并且该行必须在另一行之前。我已经尝试了数小时,我所要做的就是单击“继续”按钮!非常感谢你,你是生活的享受