从C#应用程序发送邮件

本文关键字:应用程序 | 更新日期: 2023-09-27 18:19:59

我正试图从我的windows窗体应用程序发送一封电子邮件。我看过很多类似的帖子,但似乎都不起作用。但当我在gmail中更改设置以允许不太安全的应用程序时,代码会起作用。但我不想让我的帐户对此应用程序易受攻击。以下是如果我不允许不太安全的应用程序,我会得到的代码和错误。

MailMessage mail = new MailMessage("abc@gmail.com", "xyz@gmail.com", "Test Automation", "Did you receive this?");
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.Credentials = new NetworkCredential("abc@gmail.com", "password");
client.EnableSsl = true;
client.Send(mail);
MessageBox.Show("Mail Sent", "success");

"System.Net.Mail.SmtpException"类型的未处理异常发生在System.dll 中

附加信息:SMTP服务器需要安全连接或者客户端未通过身份验证。服务器响应为:5.5.1需要身份验证。

请帮忙!

附言:我用我的gmail创建了一个outlook帐户,当我输入oulook服务器和凭据时,代码就可以工作了。那么,这是新的gmail安全更改的问题吗?其他类似的问题都解决了,但我在尝试了几乎所有的解决方案后,仍然会出现同样的错误。

从C#应用程序发送邮件

如果您没有2个因素

启用"不太安全的应用程序"

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

如果您有双因素身份验证

您可以制作"应用程序密码"。转到下面的链接,添加一个自定义应用程序(只需写下你想要的任何名字,不重要的名字只用于你自己的"记账"),然后使用该密码作为密码。

client.Credentials = new NetworkCredential("From@gmail.com", "Generated Password");

https://security.google.com/settings/u/1/security/apppasswords

注意:如果您得到"您要查找的设置不适用于您的帐户",则使用的"不太安全的应用程序"