SMTP服务器需要一个安全连接,或者客户端没有经过身份验证-仍然不能工作

本文关键字:经过 客户端 身份验证 工作 不能 或者 服务器 连接 安全 一个 SMTP | 更新日期: 2023-09-27 18:13:38

我得到上述错误。我看了网上的解决方案,我似乎已经做了所有必要的,但我仍然得到它。我加入了Enablessl = true;传递方式是Network,我已经提供了凭据。我调试了一下,用户名和密码似乎是正确的。

using System;
using System.Net;
using System.Net.Mail;
using System.Windows.Forms;
namespace SendMail
{
    public partial class MainWindow : Form
    {
        #region Private variables
        private MailMessage _message = new MailMessage();
        private EmailSender sender = EmailSender.GetInstance();
        private SmtpClient _smtpClient = new SmtpClient();
        #endregion
        public MainWindow()
        {
            InitializeComponent();
        }
        private void PrepareMailMessage()
        {
            // Set the FROM address
            _message.From = new MailAddress(tbFromAddr.ToString().Trim());
            // Set the TO address
            _message.To.Add(new MailAddress(tbToAddr.ToString().Trim()));
            // Set the SUBJECT
            _message.Subject = tbSubject.ToString();
            _message.IsBodyHtml = false;
            _message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
            _message.Priority = MailPriority.High;
            _message.SubjectEncoding = System.Text.Encoding.UTF8;
            _message.BodyEncoding = System.Text.Encoding.UTF8;
        }
        private void PrepareServer()
        {
            _smtpClient.Host = "smtp.gmail.com";
            _smtpClient.Port = 587;
            _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
            _smtpClient.UseDefaultCredentials = false;
            _smtpClient.Credentials = new NetworkCredential(tbFromAddr.ToString().Trim(), tbPassword.ToString().Trim());
            _smtpClient.EnableSsl = true;
        }
        private void PrepareSender()
        {
            sender.Message = _message;
            sender.smtpClient = _smtpClient;
        }
        private void btnSend_Click(object sender, EventArgs e)
        {
            PrepareMailMessage();
            PrepareServer();
            PrepareSender();
            //this.sender.Send();
            _smtpClient.Send(_message);
        }
    }
}

SMTP服务器需要一个安全连接,或者客户端没有经过身份验证-仍然不能工作

我检查了你的代码,它为我工作。然而,我不确定PrepareSender()方法的目的。我在PrepareMailMessage()上包含了消息体(_message.Body)。

是否尝试使用默认凭据?

_smtpClient.UseDefaultCredentials = true