从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 &lt;mrbk.writely@gmail.com&gt;">
            <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);
}

我错过了什么还是做错了什么?我读到这是在堆栈溢出的其他问题中这样做的好方法,所以我真的不知道这里的问题是什么。

谢谢你的帮助

从gmail发送邮件SMTP c#连接超时

您需要告诉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);
相关文章: