c# - SMTP 服务器需要安全连接或客户端未通过身份验证 - 仍无法正常工作

标签 c# .net ssl smtp smtpclient

我遇到了上述错误。我查看了在线解决方案,我似乎已经完成了所有必要的工作,但我仍然无法解决。我包括了 Enablessl = true;交付方式是网络,我已经提供了凭据。我调试了一下,用户名和密码似乎是正确的。

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);
        }
    }
}

最佳答案

我检查了您的代码,它对我有用。但是,我不确定方法 PrepareSender() 的用途。我在 PrepareMailMessage() 中包含了消息正文 (_message.Body)。

您是否尝试过使用默认凭据?

_smtpClient.UseDefaultCredentials = true

关于c# - SMTP 服务器需要安全连接或客户端未通过身份验证 - 仍无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016264/

相关文章:

ios - 我们如何在 Delphi iOS 中使用 Open SSL?

c# - JW Player 无法显示通过文件处理程序 (.ashx) 提供的 flv

c# - 以编程方式将 View 呈现为字符串

c# - Xamarin Forms 如何制作全局工具栏?

c# - 具有透明背景且包含不透明控件的 WPF 窗口

.net - 迁移分析管理客户端登录

node.js - Mongoose SSL,连接未被接受

c# - Xml InnerXml 缩进问题

c# - MySQL 连接时间太长?

ios - AFNetworking 2.2 SSL 固定自签名证书