从gmail发送邮件SMTP c#连接超时
本文关键字:SMTP 连接 超时 gmail | 更新日期: 2023-09-27 18:05:04
我一直在尝试通过c#从gmail帐户发送电子邮件注册我的网站。
我已经尝试了几种方法,但同样的异常继续弹出:System.Net.Mail.Smtp异常-连接已超时。
这是我包含在我的Web中的内容。配置文件:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network"
from="Writely <mrbk.writely@gmail.com>">
<network host="smtp.gmail.com"
port="465"
enableSsl="true"
defaultCredentials="false"
userName="mrbk.writely@gmail.com"
password="******" />
</smtp>
</mailSettings>
</system.net>
其中writely是我的网站名称,mrbk.writely@gmail.com是我希望发送电子邮件的帐户。
然后在我的帐户控制器中,当我连接到我的数据库并将用户保存在我的表中时,我正在创建我的MailMessage对象并尝试通过:
using (DBConnection conn = new DBConnection())
{
conn.UserInfoes.Add(userInfo);
conn.SaveChanges();
MailMessage mail = new MailMessage();
mail.From = new MailAddress("mrbk.writely@gmail.com");
mail.To.Add("bernice.zerafa11@gmail.com");
mail.Subject = "Welcome to Writely";
mail.Body = "Test content";
SmtpClient smtp = new SmtpClient();
smtp.Send(mail);
}
我错过了什么还是做错了什么?我读到这是在堆栈溢出的其他问题中这样做的好方法,所以我真的不知道这里的问题是什么。
谢谢你的帮助
您需要告诉SmtpClient要使用的设置。它不会自动从Web读取这些信息。配置文件。
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 465);
smtp.Credentials = new NetworkCredential("mrbk.writely@gmail.com", "***");
smtp.EnableSsl = true;
smtp.Send(mail);
gmail需要身份验证:
Outgoing Mail (SMTP) Server
requires TLS or SSL: smtp.gmail.com (use authentication)
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465
所以我所做的是
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("mrbk.writely@gmail.com", "mypwd"),
EnableSsl = true
};
client.Send("bernice.zerafa11@gmail.com", "bernice.zerafa11@gmail.com", "Welcome to Writely", "Test content");
我有完全相同的问题,并在将端口号从465切换到587后解决。
我有"电子邮件确认","密码恢复"answers"发送电子邮件"的问题,现在所有3个问题都解决了:)。
我知道这是一个相当老的帖子,但我通常使用现有的帖子来寻找答案,而不是提出新的问题。
谢谢大家的帮助。
我已经在这里回答过了。
这个问题也可能是由你gmail帐户的安全配置引起的。
正确的端口是587,但要进行身份验证,你需要允许gmail帐户中不太安全的应用程序访问。试试这里
对我有用,希望对你有帮助。
asp.net web forms/sharepoint示例
StringBuilder Body = new StringBuilder();
Body.Append("Your text");
String FromEmail = "you email";
String DisplayNameFromEmailMedico = "display when you receive email";
MailMessage message = new MailMessage();
message.From = new MailAddress(FromEmail, DisplayNameFromEmailMedico);
message.To.Add(new MailAddress("myclient@gmail.com"));
message.Subject = "subject that print in email";
message.IsBodyHtml = true;
message.Body = Body.ToString();
SmtpClient client = new SmtpClient();
NetworkCredential myCreds = new NetworkCredential("yoursmtpemail@gmail.com", "key from email smtp", "");
client.EnableSsl = true;
client.Credentials = myCreds;
client.Send(message);