首页 新闻 会员 周边

asp.net mvc发送QQ邮件提示 命令顺序不正确。 服务器响应为: Error: need EHLO and AUTH first !

-1
[已解决问题] 解决于 2016-04-12 18:10

asp.net mvc发送QQ邮件提示 命令顺序不正确。 服务器响应为: Error: need EHLO and AUTH first !

问题补充:

对了,已经在QQ邮箱后台设置了开启服务,他也给我了我一个授权码,但是不知道在程序中怎么设置这个授权码

大芝麻的主页 大芝麻 | 初学一级 | 园豆:4
提问于:2016-04-12 11:59
< >
分享
最佳答案
0

是的 密码不是QQ密码

在邮箱设置里面 获取

奖励园豆:5
晋升中的FE | 小虾三级 |园豆:519 | 2016-04-12 16:30

你好,我是设置的QQ邮箱独立密码,然后出现的错误也是一样的、。。我想开启SMTP服务时候给了我一串认证码,那串认证码应该是有用的,不知道应该在程序中怎么设置。

大芝麻 | 园豆:4 (初学一级) | 2016-04-12 16:39

@大芝麻: 你独立密码理解错了.

 

晋升中的FE | 园豆:519 (小虾三级) | 2016-04-12 17:14

@soLovemy: 是这个密码 他会给你一个密码 我忘了是第一个还是第二个.

你看你报错. 100%是应该就是说你发送邮箱无效. 当年我也试了好久.

我记得博客园有篇帖子 你可以看下

还有 QQ 企业邮箱和普通邮箱的设置都不一样哈.

晋升中的FE | 园豆:519 (小虾三级) | 2016-04-12 17:17

@soLovemy: 谢谢,加上  smtpClient.EnableSsl = true;就可以了,应该是我邮箱哪里设置了这个

大芝麻 | 园豆:4 (初学一级) | 2016-04-12 18:09

@soLovemy: 是的开始独立密码也弄错了

大芝麻 | 园豆:4 (初学一级) | 2016-04-12 18:11
其他回答(2)
0

你需要使用邮箱的单独密码,而不是qq密码

刘宏玺 | 园豆:14020 (专家六级) | 2016-04-12 13:19

你好,我是设置的QQ邮箱独立密码,然后出现的错误也是一样的、。。

支持(0) 反对(0) 大芝麻 | 园豆:4 (初学一级) | 2016-04-12 16:38

@大芝麻: 

public class SendMail
    {
        private MailMessage mailMessage;
        private SmtpClient smtpClient;
        private string password;//发件人密码  
        /// <summary>  
        /// 处审核后类的实例  
        /// </summary>  
        /// <param name="To">收件人地址</param>  
        /// <param name="From">发件人地址</param>  
        /// <param name="Body">邮件正文</param>  
        /// <param name="Title">邮件的主题</param>  
        /// <param name="Password">发件人密码</param>  
        public SendMail(string[] To, string From, string Body, string Title, string Password)
        {
            mailMessage = new MailMessage();
            foreach (var item in To)
            {
                mailMessage.To.Add(item);
            }
            mailMessage.From = new System.Net.Mail.MailAddress(From);
            mailMessage.Subject = Title;
            mailMessage.Body = Body;
            mailMessage.IsBodyHtml = true;
            mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
            mailMessage.Priority = System.Net.Mail.MailPriority.Normal;
            this.password = Password;
        }
        /// <summary>  
        /// 添加附件  
        /// </summary>  
        public void Attachments(string Path)
        {
            string[] path = Path.Split(',');
            Attachment data;
            ContentDisposition disposition;
            for (int i = 0; i < path.Length; i++)
            {
                data = new Attachment(path[i], MediaTypeNames.Application.Octet);//实例化附件  
                disposition = data.ContentDisposition;
                disposition.CreationDate = System.IO.File.GetCreationTime(path[i]);//获取附件的创建日期  
                disposition.ModificationDate = System.IO.File.GetLastWriteTime(path[i]);//获取附件的修改日期  
                disposition.ReadDate = System.IO.File.GetLastAccessTime(path[i]);//获取附件的读取日期  
                mailMessage.Attachments.Add(data);//添加到附件中  
            }
        }
        /// <summary>  
        /// 异步发送邮件  
        /// </summary>  
        /// <param name="CompletedMethod"></param>  
        public void SendAsync(SendCompletedEventHandler CompletedMethod)
        {
            if (mailMessage != null)
            {
                smtpClient = new SmtpClient();
                smtpClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, password);//设置发件人身份的票据  
                smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                smtpClient.Host = "smtp." + mailMessage.From.Host;
                smtpClient.SendCompleted += new SendCompletedEventHandler(CompletedMethod);//注册异步发送邮件完成时的事件  
                smtpClient.SendAsync(mailMessage, mailMessage.Body);
            }
        }
        /// <summary>  
        /// 发送邮件  
        /// </summary>  
        public void Send()
        {
            if (mailMessage != null)
            {
                using (smtpClient = new SmtpClient())
                {
                    smtpClient.Timeout = 9999999;
                    smtpClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, password);//设置发件人身份的票据  
                    smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                    smtpClient.Host = "smtp." + mailMessage.From.Host;
                    smtpClient.Send(mailMessage);
                    mailMessage.Attachments.Dispose();
                }
            }
        }

调用方法

var sendMail = new SendMail(_email, from, "", title, password);
sendMail.Attachments(filenames);
sendMail.Send();

 

这是我的代码,使用的qq邮箱,正常运行半年多了,你测试下,看看可以使用不

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-04-12 16:49

@刘宏玺: 你好,你的代码我试过,也是一样的结果,检查了很多遍密码。只是没添加附件,这有影响吗

支持(0) 反对(0) 大芝麻 | 园豆:4 (初学一级) | 2016-04-12 17:08

@刘宏玺: 谢谢,加上  smtpClient.EnableSsl = true;就可以了,应该是我邮箱哪里设置了这个

支持(1) 反对(0) 大芝麻 | 园豆:4 (初学一级) | 2016-04-12 18:09

@大芝麻: 加上这段果然对了

支持(0) 反对(0) 巴西球星 | 园豆:206 (菜鸟二级) | 2016-06-01 16:31
0

还有需要注意的点的是

client.Credentials = new System.Net.NetworkCredential("不带@的qq邮箱号", "授权码");

慧☆星 | 园豆:5640 (大侠五级) | 2017-11-25 09:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册