C# - 通过Gmail或其他方式发送电子邮件?

时间:2016-02-05 07:58:49

标签: c# email smtp gmail

服务器:VDS

操作系统:Windows Server 2008 R2

申请:无

库(应用程序使用的DLL):是,C#

我正在尝试使用我读过的gmail服务通过C#发送邮件。基本上只是一个测试电子邮件给我自己将是一个开始知道它的工作原理。如果你不得不问,信息存储在config.json文件中,而不是直接存储在代码中,因此" AccountRecovery.AccountRecoveryConfig"。

我似乎无法让它发挥作用!使用某些端口时,我会遇到不同的错误!

PORT 465 - 凭证 ERROR:

  

2016-02-05 02:52:33 - 命令:错误:System.Net.Mail.SmtpException:发送邮件失败。 ---> System.IO.IOException:无法从传输连接中读取数据:net_io_connectionclosed。

PORT 587 - 凭证 ERROR:

  

2016-02-05 02:55:50 - 命令:错误:System.Net.Mail.SmtpException:SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.5.1需要身份验证。

了解更多信息

我不知道该怎么做。我做错了吗?

    public static void SendEmail(string email)
    {
        MailMessage mail = new MailMessage(AccountRecovery.AccountRecoveryConfig.ServerEmailAddress, email);
        SmtpClient client = new SmtpClient();
        client.Timeout = 30000;
        client.Host = AccountRecovery.AccountRecoveryConfig.HostSMTPServer;
        client.Port = AccountRecovery.AccountRecoveryConfig.HostPort;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;
        client.Credentials = new System.Net.NetworkCredential(AccountRecovery.AccountRecoveryConfig.ServerEmailAddress, AccountRecovery.AccountRecoveryConfig.ServerEmailPassword);
        client.EnableSsl = true;
        //client.ServicePoint.MaxIdleTime = 1;
        mail.Subject = AccountRecovery.AccountRecoveryConfig.EmailSubjectLine;
        mail.Body = AccountRecovery.AccountRecoveryConfig.EmailBodyLine;
        mail.IsBodyHtml = false;
        client.Send(mail);
    }

1 个答案:

答案 0 :(得分:1)

google的正确端口为587,此错误:

  

2016-02-05 02:55:50 - 命令:错误:System.Net.Mail.SmtpException:   SMTP服务器需要安全连接,否则客户端不需要   认证。服务器响应为:5.5.1需要身份验证。   

了解更多信息

您应该访问不太安全的应用程序。以下是LINK,您可以在其中为当前登录的Google帐户执行此操作。