SMTP服务器要求安全连接或客户端未通过身份验证 - 仍然没有工作 [英] The SMTP server requires a secure connection or the client was not authenticated - still not working

查看:265
本文介绍了SMTP服务器要求安全连接或客户端未通过身份验证 - 仍然没有工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到上述错误。我看网上的解决方案,我似乎已经做了一切必要的,但我仍然得到它。我已经包括Enablessl =真;送货方式是网络,我已经提供的凭据。我调试它,用户名和密码似乎是正确的。

 使用系统;
使用System.Net;
使用System.Net.Mail;
使用System.Windows.Forms的;

命名空间的SendMail
{
    公共部分类主窗口:表
    {
        #地区私有变量
        私人MailMessage _Message =新MailMessage();
        私人EmailSender发送= EmailSender.GetInstance();
        私人SmtpClient _smtpClient =新SmtpClient();
        #endregion

        公共主窗口()
        {
            的InitializeComponent();
        }

        私人无效prepareMailMessage()
        {
            //设置发件人地址
            _message.From =新MailAddress(tbFromAddr.ToString()修剪());

            //设置TO地址
            _message.To.Add(新MailAddress(tbToAddr.ToString()修剪()));

            //设置的主题
            _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;
        }

        私人无效prepareServer()
        {
            _smtpClient.Host =smtp.gmail.com;
            _smtpClient.Port = 587;
            _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
            _smtpClient.UseDefaultCredentials = FALSE;
            _smtpClient.Credentials =新的NetworkCredential(tbFromAddr.ToString()修剪(),tbPassword.ToString()修剪());
            _smtpClient.EnableSsl = TRUE;
        }

        私人无效prepareSender()
        {
            sender.Message = _Message;
            sender.smtpClient = _smtpClient;
        }

        私人无效btnSend_Click(对象发件人,EventArgs的)
        {
            prepareMailMessage();
            prepareServer();
            prepareSender();
            //this.sender.Send();
            _smtpClient.Send(_Message);
        }
    }
}
 

解决方案

我检查你的code和它为我工作。不过,我不确定该方法 prepareSender()的目的。我包括邮件正文( _message.Body )的 prepareMailMessage()

你有没有尝试过使用默认凭据?

  _smtpClient.UseDefaultCredentials =真
 

I'm getting the above error. I've looked at online solutions and I seem to have done all that is necessary but I'm still getting it. I've included Enablessl = true; Delivery method is Network and I've supplied the credentials. I debugged it and the username and password seem to be correct.

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

解决方案

I checked your code and it worked for me. However, I am unsure about the purpose of the method PrepareSender(). I included message body(_message.Body) on PrepareMailMessage().

Did you tried using the default credentials?

_smtpClient.UseDefaultCredentials = true

这篇关于SMTP服务器要求安全连接或客户端未通过身份验证 - 仍然没有工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆