The message was undeliverable. All servers failed to receive the message
今天遇到这个问题,分享一下我的解决办法。
第一次做测试的时候,是用QQ邮箱发的,报错后百度结果说没有开启SMTP服务,然后进QQ邮箱开启了,结果还是这个问题。
后来换了之前同事的QQ邮箱来发,却来发送成功,对比两个邮箱的设置后发现他的邮箱没有独立密码,而我这边提示必须设置独立密码后才能开启SMTP服务。他那边能那样设置,我就搞不懂了。
我想可能就是独立密码的关系,然后申请了一个网易邮箱,开通SMTP服务后再来测试,竟然发送成功了!!!
不啰嗦了,贴代码。
protected void Page_Load(object sender, EventArgs e) { string str = @" 你好啊 邓苦逼"; SendEmail("小逼崽子你好", str, "收件人邮箱"); } /// <summary> /// 发送邮件 /// </summary> /// <param name="Subject">主题</param> /// <param name="body">内容</param> /// <param name="FromEmail">你的email</param> /// <param name="FromEmail">对方的email</param> /// <param name="AddAttachment">附件</param> /// <param name="PassWord">邮箱的登陆密码</param> /// <param name="Mailserver">发送服务器</param> private static void SendEmail(String Subject, String body, string FromEmail, String ToEmail, String AddAttachment, string PassWord, string Mailserver) { jmail.Message Jmail = new jmail.Message(); //Silent属性:如果设置为true,JMail不会抛出例外错误. JMail. Send() 会根据操作结果返回true或false Jmail.Silent = false; //Jmail创建的日志,前提loging属性设置为true Jmail.Logging = true; //字符集,缺省为"US-ASCII" Jmail.Charset = "GB2312"; //信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。 // Jmail.ContentType = "text/html"; ToEmail = ToEmail.Replace("/n", "").Replace(" ", ""); string[] str = ToEmail.Split(','); for (int i = 0; i < str.Length; i++) { //添加收件人 Jmail.AddRecipient(str[i], "", ""); Jmail.From = FromEmail; //发件人邮件用户名 Jmail.MailServerUserName = FromEmail; //发件人邮件密码 Jmail.MailServerPassWord = PassWord; //设置邮件标题 Jmail.Subject = Subject; // 邮件添加附件,(多附件的话,可以再加一条Jmail.AddAttachment( "c://test.jpg",true,null);)就可以搞 定了。[注]:加了附件,讲把上面的Jmail.ContentType="text/html";删掉。否则会在邮件里出现乱码。 if (AddAttachment != "") Jmail.AddAttachment(AddAttachment, true, null); //邮件内容 Jmail.Body = body; //加密文件 //Jmail.PGPEncrypt = true; //Jmail发送的方法 Jmail.Send(Mailserver, false); Jmail.ClearAttachments(); Jmail.ClearRecipients(); } Jmail.Close(); } /// <summary> /// 发送邮件 /// </summary> /// <param name="title">主题</param> /// <param name="test">内容</param> /// <param name="email">邮件</param> public static void SendEmail(string title, string test, string email) { SendEmail(title, test, "邮箱帐号", email, "", "邮箱密码", "SMTP服务器:smtp.163.com,如果是腾讯邮箱,请改用smtp.qq.com"); }
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/57962.html