博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC发送邮件
阅读量:6588 次
发布时间:2019-06-24

本文共 14241 字,大约阅读时间需要 47 分钟。

<>

发送邮件报错说明

发送邮件 假设发送人的邮箱username与邮箱password都没有填写错误:假设报:參数或变量中有语法错误。 server响应为:mail from address must be same as authorization user错误,问题可能出在authorization user  没授权。假设是QQ邮箱。那么仅仅要进入QQ邮箱。QQ邮箱:设置---账户  找到POP3/IMAP/SMTP服务  都开启。这时候发现能够发送邮件了。

假设报:SMTP server要求安全连接或client未通过身份验证。

server响应为:Must issue a STARTTLS command first. 可能出现的问题是发送邮件的serverport(smtp.Port)配置错误。 比如:smtp.Port = 25

假设报:命令顺序不对。

server响应为:Error: need EHLO and AUTH first ! 非常有可能是发件人邮箱的username写错了;比如:(smtp.Credentials = new NetworkCredential("邮箱的username", "发件人邮箱password");

假设报:參数或变量中有语法错误。 server响应为:mail from address must be same as authorization user  非常有可能是发件人邮箱的password错误了:比如:(smtp.Credentials = new NetworkCredential("邮箱的username", "发件人邮箱password");

==============================================================================

web.config配置文件

Home控制器

using CFPS_Redesign;using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace MVC发送邮件測试.Controllers{    public class HomeController : Controller    {        //        // GET: /Home/        public ActionResult SendEmail()        {            EmailHelper eh = new EmailHelper("邮件的主题", "你什么时候过来吃饭?");            if (eh.SendEmail())            {                return View();            }            else            {                return Content("on");            }                   }    }}

EmailHelper邮件发送类

using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Net;using System.Net.Mail;using System.Text;namespace CFPS_Redesign{    ///     /// Author      : Bin    /// Date        : 2015-06-26    /// Description : 邮件发送辅助类    ///     public class EmailHelper    {        #region [ 属性(发送Email相关) ]        private string _SmtpHost = string.Empty;        private int _SmtpPort = -1;        private string _FromEmailAddress = string.Empty;        private string _FormEmailPassword = string.Empty;        private string _ToEmailListString = string.Empty;        private string _CcEmailListString = string.Empty;        private string _BccEmailListString = string.Empty;        ///         /// smtp server         ///         public string SmtpHost        {            get            {                if (string.IsNullOrEmpty(_SmtpHost))                {                    _SmtpHost = ConfigurationManager.AppSettings["SmtpHost"];                }                return _SmtpHost;            }        }        ///         /// smtp serverport  默觉得25        ///         public int SmtpPort        {            get            {                if (_SmtpPort == -1)                {                    if (!int.TryParse(ConfigurationManager.AppSettings["SmtpPort"], out _SmtpPort))                    {                        _SmtpPort = 25;                    }                }                return _SmtpPort;            }        }        ///         /// 发送者 Eamil 地址        ///         public string FromEmailAddress        {            get            {                if (string.IsNullOrEmpty(_FromEmailAddress))                {                    _FromEmailAddress = ConfigurationManager.AppSettings["FromEmailAddress"];                }                return _FromEmailAddress;            }        }        ///         /// 发送者 Eamil password        ///         public string FormEmailPassword        {            get            {                if (string.IsNullOrEmpty(_FormEmailPassword))                {                    _FormEmailPassword = ConfigurationManager.AppSettings["FormEmailPassword"];                }                return _FormEmailPassword;            }        }        #endregion        #region [ 属性(邮件相关) ]        ///         /// 收件人 Email 列表,多个邮件地址之间用 半角逗号“,”或者分号“;”,或者竖线“|” 等符号分隔开        ///         public string ToEmailListString        {            get            {                if (string.IsNullOrEmpty(_ToEmailListString))                {                    return ConfigurationManager.AppSettings["ToEmailListString"];                }                return _ToEmailListString;            }            set            {                this._ToEmailListString = value;            }        }        ///         /// 邮件的抄送者,支持群发,多个邮件地址之间用 半角逗号“,”或者分号“;”,或者竖线“|” 等符号分隔开        ///         public string CcEmailListString        {            get            {                if (string.IsNullOrEmpty(this._CcEmailListString))                {                    return ConfigurationManager.AppSettings["CcEmailListString"];                }                return _CcEmailListString;            }            set            {                this._CcEmailListString = value;            }        }        ///         /// 邮件的密送者,支持群发,多个邮件地址之间用 半角逗号“,”或者分号“;”,或者竖线“|” 等符号分隔开        ///         public string BccEmailListString        {            get            {                if (string.IsNullOrEmpty(_BccEmailListString))                {                    return ConfigurationManager.AppSettings["BccEmail"];                }                return _BccEmailListString;            }            set            {                this._BccEmailListString = value;            }        }        ///         /// 邮件标题        ///         public string Subject { get; set; }        ///         /// 邮件正文        ///         public string EmailBody { get; set; }        private bool _IsBodyHtml;        ///         /// 邮件正文是否为Html格式        ///         public bool IsBodyHtml        {            get { return _IsBodyHtml; }            set { _IsBodyHtml = value; }        }        ///         /// 附件列表        ///         public List
AttachmentList { get; set; } #endregion #region [ 构造函数 ] ///
/// 构造函数(EmailBody默觉得html格式) /// ///
邮件标题 ///
邮件正文 public EmailHelper(string subject, string emailBody) { this.Subject = subject; this.IsBodyHtml = true; this.EmailBody = emailBody; } ///
/// 构造函数 /// ///
邮件标题 ///
邮件正文是否为Html格式 ///
邮件正文 public EmailHelper(string subject, bool isBodyHtml, string emailBody) { this.Subject = subject; this.IsBodyHtml = IsBodyHtml; this.EmailBody = emailBody; } ///
/// 构造函数(EmailBody默觉得html格式) /// ///
邮件标题 ///
邮件正文 ///
附件列表 public EmailHelper(string subject, string emailBody, List
attachmentList) { this.Subject = subject; this.EmailBody = emailBody; this.AttachmentList = attachmentList; this.IsBodyHtml = true; } ///
/// 构造函数 /// ///
邮件标题 ///
邮件正文 ///
邮件正文是否为Html格式 ///
附件列表 public EmailHelper(string subject, string emailBody, bool isBodyEmail, List
attachmentList) { this.Subject = subject; this.EmailBody = emailBody; this.AttachmentList = attachmentList; } ///
/// 构造函数 (EmailBody默觉得html格式) /// ///
收件人列表字符串 ///
邮件标题 ///
邮件正文 public EmailHelper(string toEmailListString, string subject, string emailBody) { this.ToEmailListString = toEmailListString; this.Subject = subject; this.EmailBody = emailBody; this.IsBodyHtml = true; } ///
/// 构造函数 /// ///
收件人列表字符串 ///
邮件标题 ///
邮件正文是否为Html格式 ///
邮件正文 public EmailHelper(string toEmailListString, string subject, bool isBodyHtml, string emailBody) { this.ToEmailListString = toEmailListString; this.Subject = subject; this.IsBodyHtml = isBodyHtml; this.EmailBody = emailBody; } ///
/// 构造函数 /// ///
收件人列表字符串 ///
抄送人列表字符串 ///
邮件标题 ///
邮件正文是否为Html格式 ///
邮件正文 public EmailHelper(string toEmailListString, string ccEmailListString, string subject, bool isBodyHtml, string emailBody) { this.ToEmailListString = toEmailListString; this.CcEmailListString = ccEmailListString; this.Subject = subject; this.IsBodyHtml = isBodyHtml; this.EmailBody = emailBody; } ///
/// 构造函数 /// ///
收件人列表字符串 ///
抄送人列表字符串 ///
邮件标题 ///
邮件正文是否为Html格式 ///
邮件正文 ///
附件列表 public EmailHelper(string toEmailListString, string ccEmailListString, string subject, bool isBodyHtml, string emailBody, List
attachmentList) { this.ToEmailListString = toEmailListString; this.CcEmailListString = ccEmailListString; this.Subject = subject; this.IsBodyHtml = isBodyHtml; this.EmailBody = emailBody; this.AttachmentList = attachmentList; } ///
/// 构造函数 /// ///
收件人列表字符串 ///
抄送人列表字符串 ///
密送人列表字符串 ///
邮件标题 ///
邮件正文是否为Html格式 ///
邮件正文 public EmailHelper(string toEmailListString, string ccEmailListString, string bccEmailListString, string subject, bool isBodyHtml, string emailBody) { this.ToEmailListString = toEmailListString; this.CcEmailListString = ccEmailListString; this.BccEmailListString = bccEmailListString; this.Subject = subject; this.IsBodyHtml = isBodyHtml; this.EmailBody = emailBody; } ///
/// 构造函数 /// ///
收件人列表字符串 ///
抄送人列表字符串 ///
密送人列表字符串 ///
邮件标题 ///
邮件正文是否为Html格式 ///
邮件正文 ///
附件列表 public EmailHelper(string toEmailListString, string ccEmailListString, string bccEmailListString, string subject, bool isBodyHtml, string emailBody, List
attachmentList) { this.ToEmailListString = toEmailListString; this.CcEmailListString = ccEmailListString; this.BccEmailListString = bccEmailListString; this.Subject = subject; this.IsBodyHtml = isBodyHtml; this.EmailBody = emailBody; this.AttachmentList = attachmentList; } #endregion #region [ 发送邮件 ] ///
/// 发送邮件 /// ///
public bool SendEmail() { try { MailMessage mm = new MailMessage(); //实例化一个邮件类 mm.Priority = MailPriority.Normal; //邮件的优先级,分为 Low, Normal, High。通经常使用 Normal就可以 mm.From = new MailAddress(this.FromEmailAddress, "管理员", Encoding.GetEncoding("GB2312")); //收件人 if (!string.IsNullOrEmpty(this.ToEmailListString)) { string[] toEmailArray = this.ToEmailListString.Split(new char[] { ';', ',', '|', ' ' }, StringSplitOptions.RemoveEmptyEntries); foreach (string toEmail in toEmailArray) { mm.To.Add(toEmail.Trim()); } } //抄送人 if (!string.IsNullOrEmpty(this.CcEmailListString)) { string[] CcEmailArray = this.CcEmailListString.Split(new char[] { ';', ',', '|', ' ' }, StringSplitOptions.RemoveEmptyEntries); foreach (string ccEmail in CcEmailArray) { mm.CC.Add(ccEmail.Trim()); } } //密送人 if (!string.IsNullOrEmpty(this.BccEmailListString)) { string[] BccEmailArray = this.BccEmailListString.Split(new char[] { ';', ',', '|', ' ' }, StringSplitOptions.RemoveEmptyEntries); foreach (string bccEmail in BccEmailArray) { mm.Bcc.Add(bccEmail.Trim()); } } mm.Subject = this.Subject; //邮件标题 mm.SubjectEncoding = Encoding.GetEncoding("GB2312"); //这里很重要。假设你的邮件标题包括中文。这里一定要指定。否则对方收到的极有可能是乱码。 mm.IsBodyHtml = this.IsBodyHtml; //邮件正文是否是HTML格式 mm.BodyEncoding = Encoding.GetEncoding("GB2312"); //邮件正文的编码, 设置不对。 接收者会收到乱码 mm.Body = this.EmailBody; //邮件正文 //邮件附件 if (this.AttachmentList != null && this.AttachmentList.Count > 0) { foreach (Attachment attachment in this.AttachmentList) { mm.Attachments.Add(attachment); } } SmtpClient smtp = new SmtpClient(); //实例化一个SmtpClient smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //将smtp的出站方式设为 Network smtp.EnableSsl = false; //smtpserver是否启用SSL加密 smtp.Host = this.SmtpHost; //指定 smtp server地址 //smtp.Port = this.SmtpPort; //指定 smtp server的port。默认是25。假设採用默认port。可省去 //smtp.UseDefaultCredentials = true; //假设你的SMTPserver不须要身份认证。则使用以下的方式,只是。眼下基本没有不须要认证的了 smtp.Credentials = new NetworkCredential(this.FromEmailAddress, this.FormEmailPassword); //假设须要认证,则用这样的方式 //发送邮件,假设不返回异常, 则大功告成了。 smtp.Send(mm); return true; } catch (Exception e) { return false; } } #endregion }}


你可能感兴趣的文章
加强大数据应用助推 交通信息服务产业化进程
查看>>
关于在arm裸板编程时使用printf问题的解决方法
查看>>
ring0检测隐藏进程
查看>>
深度学习框架中的魔鬼:探究人工智能系统中的安全问题
查看>>
又发生了重新造轮子的行为
查看>>
Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
查看>>
使用Docker Swarm来运行服务
查看>>
基于微服务和Docker容器技术的PaaS云平台架构设计
查看>>
openstack nova 源码解析 — Nova API 执行过程从(novaclient到Action)
查看>>
自行车中的物理知识汇总
查看>>
阿里云虚拟主机的使用,附幸运券领取
查看>>
数据库相关中间件收录集
查看>>
阿里云王坚:运营才能缔造真正的云计算
查看>>
C语言数据结构双向链表之温故而知新
查看>>
Java中类的创建及类与对象的关系
查看>>
大规模虚拟化,舍我其谁?
查看>>
“提速降费” 并非一蹴而就 矛头齐指运营商有失偏颇
查看>>
云计算99.9%可用性毫无意义 灾难恢复是关键
查看>>
生命科学研究需求推动云计算发展
查看>>
应用联合服务 云计算拉近应用和操作距离
查看>>