16

我正在尝试从 C# 应用程序发送带有我网站地址的电子邮件。
直到最近,这几个月都运行良好。(也许我的提供者改变了一些东西或者其他人改变了设置)

这是代码:

  private void sendEmail(Email invite) {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient(smtpServerName);
            mail.From = new MailAddress(emailUsername);

            mail.To.Add(invite.RecipientEmail);
            mail.Subject = invite.MessageSubject;
            mail.Body = invite.MessageBody;

            SmtpServer.UseDefaultCredentials = false;
            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
//          SmtpServer.EnableSsl = true;
            SmtpServer.Send(mail);
        }  

这是错误:

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

看着其他问题,我尝试了他们的建议,使SmtpServer.EnableSsl = true. 这根本不起作用。它给出了以下内容:

System.Net.Mail.SmtpException:服务器不支持安全连接。

我猜我应该禁用 SSL 并按照以前的方式使用它。

任何建议如何使电子邮件发送再次工作?

编辑
我尝试过但没有SmtpServer.UseDefaultCredentials = false;
尝试过将其设置为 true:SmtpServer.UseDefaultCredentials =true;
我尝试过评论该行以及以下内容//SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);

4

4 回答 4

8

该错误消息通常由以下原因之一引起:

  • 连接设置不正确,例如为安全或非安全连接指定了错误的端口
  • 凭据不正确。我会验证用户名和密码组合,以确保凭据正确。
于 2012-12-10T19:44:46.723 回答
7

我认为你必须设置DeliveryMethod = SmtpDeliveryMethod.Network

这个目前正在我的电脑上工作,我刚刚检查过,工作得很好,试试这个

using System.Net;
using System.Net.Mail;

var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
           {
               Host = "smtp.gmail.com",
               Port = 587,
               EnableSsl = true,
               DeliveryMethod = SmtpDeliveryMethod.Network,
               UseDefaultCredentials = false,
               Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
           };
using (var message = new MailMessage(fromAddress, toAddress)
                     {
                         Subject = subject,
                         Body = body
                     })
{
    smtp.Send(message);
}
于 2012-12-08T02:44:15.480 回答
6

如果您确定您的用户名和密码正确,但仍然出现错误,则表示 Gmail 已阻止您的应用程序。

您应该在与您的 gmail 帐户相关的以下链接中选中“打开”单选按钮。然后它会正常工作。

于 2017-02-27T06:59:30.663 回答
0

如果您在服务器上部署应用程序,请尝试在您的服务器中登录您的 google 帐户。奇怪的是,smtp 电子邮件发送应用程序在我的桌面上运行良好。不在服务器中。这可能会受到 google 安全机制工作方式的影响。

于 2021-10-20T03:50:32.967 回答