【问题标题】:SMTP Email not sendingSMTP 电子邮件未发送
【发布时间】:2015-06-15 23:08:19
【问题描述】:

我做了一个简单的程序来发送电子邮件,但它发送失败并给了我一个异常。

代码如下:

using System.Net;
using System.Net.Mail;

public class test{
    public static void Main()
    {
        SmtpClient client = new SmtpClient();
        client.Host = "smtp.gmail.com";
        client.Port = 465;
        client.EnableSsl = true;
        client.Credentials = new NetworkCredential("myemail@gmail.com","mypassword");
        client.Send("myemail@gmail.com","myemail@gmail.com","Test","Test");
    }
}

注意:刚刚添加了以下代码行:

client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;

并将端口更改为 587,然后它说需要身份验证,我已经输入了我的凭据,可能是因为端口 587 需要 TLS 而不是 SSL(从我今天了解到的搜索中,我知道 SSL 是TLS 的“进化”,不是吗?)

【问题讨论】:

  • 它给出了什么异常? 包括内部异常,这可能是一个重要线索。
  • 查看这个 google 链接 myaccount.google.com/security?pli=1 并仔细查看最后一点
  • 这只是一个测试,我使另一个应用程序更复杂一点,但唯一的区别是它使用变量并具有图形界面。无论如何,它给了我这个异常: System.dll 中发生了“System.Net.Mail.SmtpException”类型的未处理异常附加信息:已达到时间限制。 (我翻译了最后一行,因为它是葡萄牙语)。
  • 我的回答有用吗?

标签: c# email smtp gmail smtpclient


【解决方案1】:

Tunigamer,刚刚尝试了下面的代码并且成功了:

SmtpClient gmailClient = new SmtpClient {
                Host = "smtp.gmail.com",
                Port = 587,
                EnableSsl = true,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential("email@gmail.com", "password")
            };


            using(MailMessage gMessage = new MailMessage("email@gmail.com", "email@gmail.com", "Test", "Test")) {

                try {
                    gmailClient.Send(gMessage);
                } catch(Exception) { }
            }

另外,我收到了来自 GMAIL 的以下通知,您需要禁用您帐户的登录安全功能:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2016-11-22
    • 2011-07-30
    • 2017-02-11
    • 1970-01-01
    • 2016-04-17
    • 2015-07-12
    相关资源
    最近更新 更多