首页 > 解决方案 > 如何使用 C# 从我的公司 gmail 地址通过 SMTP 发送电子邮件

问题描述

使用 C# 从个人 gmail 地址发送电子邮件是一个非常常见的问题。互联网上有数百个关于此的线程。我的问题是从我的 g-suite 帐户 (info@mydomain.com) 发送电子邮件。我尝试了以下步骤

  1. 在 gmail 中允许不太安全的应用 在此处输入图像描述
  2. 从以下代码发送电子邮件

       SmtpClient client = new SmtpClient(FINAPApplicationSettings.SmtpServer, FINAPApplicationSettings.SmtpServerPort);
        client.UseDefaultCredentials = false;
        client.EnableSsl = true;
        client.Credentials = new NetworkCredential("info@mydomain.com", "email password");
        MailMessage mailMessage = new MailMessage();
        mailMessage.From = new MailAddress("info@mydomain.com");
        mailMessage.To.Add("receiver@receiverdomain.com");
        mailMessage.IsBodyHtml = true;
        mailMessage.Body = "Email Body";
        mailMessage.Subject = "FINAP REGISTRATION VERIFICATION";
    

尝试发送电子邮件时收到此异常。“ SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证” 我从 azure 购买了此域 (mydomain.com)。info@mydomain.com 不是 g-suite 的管理员帐户。但我有权访问管理员帐户。非常感谢您对此提供的帮助。

标签: c#emailsmtpgmail

解决方案


我刚刚在我的公司 G-Suite 帐户上使用您的代码进行了测试。

允许用户管理自己的设置后,您需要确保NetworkCredential对象中提供的用户名已配置为“允许安全性较低的应用程序”。您可以通过以下方式获得它:

  1. 使用户能够管理自己的设置(您已经这样做了)
  2. 转到(在这种情况下)到Google 帐户页面以获取info@mydomain.com.
  3. 点击“登录和安全”
  4. 滚动到底部并确保滑块已打开。

第一步可能需要一些时间才能传播到 G-Suite 中的所有用户。

注意:如果密码或用户名不正确,您也会收到此错误。

如果您已完成上述所有操作,但仍然无法正常工作,您可能需要在 DNS 设置中配置 SPF。请参阅使用 SPF 授权电子邮件发件人


推荐阅读