无法在Windows窗体中使用SMTP发送电子邮件

时间:2016-01-30 23:24:33

标签: c# winforms smtp

所以,我正在使用Windows Forms并尝试使用smtp发送电子邮件。 这是一个代码:

MailMessage mail = new MailMessage(from, to, subject, text);
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port = 465;
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential(from, password);

try
{
    client.Send(mail);
    MessageBox.Show("Mesage has benn sant");
}
catch (Exception ex)
{
    MessageBox.Show("Failure while sending message");
    MessageBox.Show(ex.Message);
}

当我运行此代码时,我收到以下错误:

  

"发送电子邮件失败"。

当我将端口更改为587时,我有以下内容:

  

" SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应是:5.5.1身份验证需要"。

那为什么我不能发送电子邮件?有人可以解释一下吗?

我已将端口更改为25并已从hotmail发送邮件(我已更换" smtp.gmail.com"使用" smtp.live.com"),而不是来自gmail。它有效。似乎gmail有问题。

3 个答案:

答案 0 :(得分:0)

首先将端口更改为25。

此外,client.Credentials的参数应该是您登录的用户名和密码。例如......

client.Credentials = new System.Net.NetworkCredential("abc@gmail.com", "mypassword");

答案 1 :(得分:0)

我能够通过添加以下三行并在gmail帐户设置中进行更改来使代码正常工作:

        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;
        client.Credentials = new System.Net.NetworkCredential (from, password);

除了上述更改之外,您还需要更新您的Google帐户设置并允许安全性较低的应用。

我在这个帖子中了解到了这一点:Sending email in .NET through Gmail

希望这有帮助。

答案 2 :(得分:-1)

我遇到了同样的问题。能够通过禁用此安全设置来修复它:

转到此链接并启用“访问不太安全的应用”

https://www.google.com/settings/security/lesssecureapps

enter image description here