当前位置: 首页 > 知识库问答 >
问题:

如何使用Gmail的SMTP客户端在C#中向自己发送电子邮件,而无需在Gmail设置中启用对不太安全的应用程序的访问?

慕容文昌
2023-03-14

我正在开发ASP。NET Web窗体应用程序,我正在尝试通过编程方式向自己发送电子邮件。我使用的是Gmail的SMTP客户端,一切都很好,只是在发送邮件时出现以下错误:

系统。网。邮件。SmtpException:SMTP服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1需要身份验证。在“

如果我进入我的gmail帐户设置并启用允许访问“不太安全的应用程序”的选项,一切正常。我想知道启用此选项后如何发送电子邮件。

protected void sendEmail(object sender, EventArgs e)
{
    var client = new SmtpClient("smtp.gmail.com", 587)
    {
        Credentials = new System.Net.NetworkCredential("myusername@gmail.com", "mypassword"),
        DeliveryMethod = SmtpDeliveryMethod.Network,
        EnableSsl = true
    };
    
    MailAddress from = new MailAddress("myusername@gmail.com", "Torchedmuffinz");
    MailAddress to = new MailAddress("myusername@gmail.com", "Torchedmuffinz");
    MailMessage message = new MailMessage(from, to);
    message.Subject = "test";
    message.Body = "test";
    Attachment attachFile = new Attachment(@"pathtofile");
    message.Attachments.Add(attachFile);

    try { client.Send(message); }
    catch (Exception email_exception)
    {
        System.Diagnostics.Debug.WriteLine(email_exception);
    }
}

共有2个答案

凌和悦
2023-03-14

有可能在没有“允许不太安全的应用”选项的情况下使用Google SMTP服务器,但您不能使用标准的Google用户名和密码。请参阅我在其他帖子上的说明:

有没有办法使用ASP。NET通过Google Apps帐户发送电子邮件,而不选择“允许不太安全的应用”选项?

史阳晖
2023-03-14

Gmail端口587不支持SSL。

我认为以下代码应该适合您。

MailMessage msg = new MailMessage();
msg.From=new MailAddress("yourmail@gmail.com");
msg.To.Add("receiver@receiverdomain.com");
msg.Subject="Your Subject";
msg.Body="Message content is going to be here";
msg.IsBodyHtml=false; //if you are going to send an html content, you have to make this true

SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port=587;

NetworkCredential credential=new NetworkCredential("yourmail@gmail.com","your gmail password");
client.UseDefaultCredentials=false;
client.Credentials=credential;
client.Send(msg);
 类似资料:
  • 我想使用python 3.4脚本从我的gmail地址发送邮件。我使用以下代码: 如果我在我的gmail帐户中“允许不太安全的应用”,脚本就可以正常工作。然而,如果我禁用“不太安全的应用程序”,它将不起作用(我收到一封来自谷歌的警告电子邮件,其中“登录尝试被阻止”)。我想修改我的代码,以便能够在不启用此功能的情况下发送邮件。 我看了所有关于类似问题的问答,但没有找到任何有用的答案或方法。有人对此有解

  • 我正在尝试使用Java向Gmail帐户发送邮件,代码如下。我似乎做的每件事都是正确的,但我收到了身份验证失败的消息。谷歌想让我打开“不太安全的应用”功能来实现传输。 有没有一种方法可以让Gmail对Java满意,并且不会出现“打开不太安全的应用程序”的错误? 错误: 代码: 我已经做了研究,所以据我所知,代码不是问题所在,只是没有看到一个解决方案,用于不太安全的应用程序消息。 参考文献: 参考文献

  • 我正在使用C#使用SMTP和gmail服务器发送电子邮件。 下面是我用于发送电子邮件的代码。我遇到了一些错误,即。 SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证。 我做错了什么?我如何使用gmail发送电子邮件。

  • 以下代码https://stackoverflow.com/a/3649148一直有效,直到最近谷歌改变了他们的安全政策,它才被打破。 我收到了来自谷歌的邮件 你好,xxx,有人刚刚试图登录你的Google帐户xxx@gmail.com来自不符合现代安全标准的应用程序。 我们强烈建议您使用Gmail等安全应用程序访问您的帐户。Google制作的所有应用程序都符合这些安全标准。另一方面,使用不太安全

  • 我在我的网站上创建了一个联系表单,并且,为了向网站帐户发送电子邮件(contact@mywebsite.com),我正在使用gmail smtp,使用与接收邮件相同的电子邮件。 所以,用户进入我的网站,点击联系页面,填写表格:姓名,电子邮件,信息。 比我发送以下代码的电子邮件: 电子邮件将进入“我的收件箱”contact@mywwebsite.com“,我可以正常阅读邮件,但是。。。当我点击“回复

  • 在我的邮件配置中: 但我的测试电子邮件已启用“访问不太安全的应用程序”。是否有机会向任何类型的电子邮件发送电子邮件?目前,我无法获得服务器电子邮件和他们的配置。我需要创建自己的电子邮件并集成到网站。 我的搜索给了我“两步验证”。如果我启用此功能,系统是否可以自动发送电子邮件?我找不到任何解决办法。我希望有人能帮助我。提前谢谢。