MVC发送邮件

MVC发送邮件

在MVC中,使用代码发送邮件。
此处示例代码应用背景:在提交一条数据时,给指定用户发送邮件进行提醒

0.在Web.Config中进行发送邮件功能的配置

  <appSettings>
  <!-- E-Mail SMTP Configurations -->
	  <add key="SMTPHost" value="XXX" />
	  <!-- Host name or IP address of SMTP server -->
	  <add key="SMTPPort" value="XXX" />
	  <!-- Port of SMTP server Default is  -->
	  <add key="SMTPUser" value="XXX" />
	  <!-- User name of SMTP server -->
	  <add key="SMTPPassword" value="XXX" />
	  <!-- User password of SMTP server -->
	  <add key="SenderAddress" value="XXX" />
	  <!-- Default sender address of mail -->
	  <!-- Equipment Realtime Monitor Refresh Interval Time  -->
	  <add key="RefreshTime" value="60000" />
	  <!-- Unit:Milliseconds -->
	  <!-- 0:正环境,需要基类验证,1:调试状态,无需基类验证 -->
	  <add key="IsDebug" value="0" />
	  <!-- 0:不发送邮件   1:发送邮件 -->
	  <add key="SendMail" value="1" />

	  <add key="AdminMail" value="" />
  </appSettings>

1.新建一个Business,用于发送邮件,命名为‘SendEmailBusiness’

    public class Send_EmailBusiness : BaseBusiness
    {
    //定义发送邮件的方法函数
            public static void SendSystemMail(string sTo, string sCc, string sSubject, string sBody)
        {

            try
            {
                //定义发送者的邮箱地址
                string sFrom = "XXX.com";
                string adminEmial = System.Configuration.ConfigurationManager.AppSettings["AdminMail"];
                string mailServer = System.Configuration.ConfigurationManager.AppSettings["SMTPHost"];
                int mailPort = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["SMTPPort"]);
                string mailSender = System.Configuration.ConfigurationManager.AppSettings["SenderAddress"];
                string mailSenderPwd = System.Configuration.ConfigurationManager.AppSettings["SMTPPassword"];

                MailMessage message = new MailMessage();
                string[] arrTo = sTo.Split(';');
                foreach (string s in arrTo)
                {
                    message.To.Add(s.Trim());
                }

                string[] arrCc = sCc.Split(';');

                foreach (string s in arrCc)
                {
                    message.CC.Add(s.Trim());
                }
                message.Bcc.Add(adminEmial);

                //message.IsBodyHtml = true;
                message.Priority = MailPriority.Normal;
                message.From = new MailAddress(sFrom);
                message.Subject = sSubject;
                message.IsBodyHtml = true;
                message.Body = sBody;

                SmtpClient client = new SmtpClient(mailServer, mailPort);
                client.Credentials = new NetworkCredential(mailSender, mailSenderPwd);
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.Send(message);
                message.Dispose();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
            }
        }
        public static void SendSystemMail(string sTo, string sSubject, string sBody)
        {

            try
            {
                string sFrom = "XXX.com";
                string adminEmial = System.Configuration.ConfigurationManager.AppSettings["AdminMail"];
                string mailServer = System.Configuration.ConfigurationManager.AppSettings["SMTPHost"];
                int mailPort = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["SMTPPort"]);
                string mailSender = System.Configuration.ConfigurationManager.AppSettings["SenderAddress"];
                string mailSenderPwd = System.Configuration.ConfigurationManager.AppSettings["SMTPPassword"];

                MailMessage message = new MailMessage();
                string[] arrTo = sTo.Split(';');
                foreach (string s in arrTo)
                {
                    message.To.Add(s.Trim());
                }
                message.Bcc.Add(adminEmial);

                //message.IsBodyHtml = true;
                message.Priority = MailPriority.Normal;
                message.From = new MailAddress(sFrom);
                message.Subject = sSubject;
                message.IsBodyHtml = true;
                message.Body = sBody;

                SmtpClient client = new SmtpClient(mailServer, mailPort);
                client.Credentials = new NetworkCredential(mailSender, mailSenderPwd);
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.Send(message);
                message.Dispose();
            }
            catch (Exception EX)
            {
                //throw EX.InnerException;
            }
            finally
            {
            }
        }

//某个操作对应的发送邮件功能,此处的操作是Submit。
//在这个函数里定义发送邮件的主题以及内容
        public static async Task<bool> PCN_Submit_Email(string A, string C, string actor)
        {
            try
            {
            //邮件接收者的邮箱地址
                string Emailto = "";
                string EmailSubject = "XXX: " + A+ " Notice";
                string EmailBody = "<html>" +
                           "<table>" +
                           "<tr>" +
                               "Hi , " +
                           "</tr>" +
                           "<tr>" +
                               "<td> ID: <strong>" + A+ "</strong> , Chang Classification: " + C+ ". </td>" +
                           "</tr>" +
                                                      "<tr>" +
                               "<td> The request was submitted by " + actor + " </td>" +
                           "</tr>" +
                           "</table>" +
                           "</html> ";
                await Task.Run(() => SendSystemMail(Emailto, EmailSubject, EmailBody));
                return true;
            }
            catch (Exception ex)
            {
                var message = ex.Message.ToString();
                return false;
            }

        }
    }

2.在进行操作时,用js生成flag,让控制器获取到,当前进行的是什么操作

    @*submit*@
    <script type="text/javascript" language="javascript">
        //submit
        function completeSubmitRequest(result) {
            var json = eval('(' + result + ')');
            if (json.ReturnMessage != null) {
                $("#statusMessage").find("p").html(json.ReturnMessage);
            } else {
                $("#statusMessage").find("p").html(json.ReturnException.Message);
            }
            $("#statusMessage").removeClass("hide");
            if (json.ReturnResult < 0) {
                $("#statusMessage").removeClass("alert-success");
                $("#statusMessage").addClass("alert-danger");
            }
            else {
                $("#statusMessage").removeClass("alert-danger");
                $("#statusMessage").addClass("alert-success");
                $(function () {
                    $.post(
                    //前者是控制器路径地址,后者flag是对应的操作,flag会传到控制器的发送邮件方法里
                        "/XXX/XXX/Sendmail", { flag: "Submit" },
                        function (data) {
                        }
                    )
                })
                refreshRequestList();
            }
        }
    </script>

3.控制器里调用发送邮件

 #region Email
        [HttpPost]
        public async Task<ActionResult> Sendmail(string flag)
        {
            string actor = CurrentUser.UserName;
            BusinessResult<string> result = new TKManagement.Business.BusinessResult<string>();
            //
            if (flag == "Close")
            {
                string ID= TempData["ID"].ToString();
                string change = TempData["change1"].ToString();
                await Send_EmailBusiness.lose_Email(A, C, actor);
            }
            if (flag == "Submit")
            {
                string ID= TempData["ID2"].ToString();
                string change = TempData["change2"].ToString();
                await Send_EmailBusiness.Submit_Email(A, C, actor);
            }

            return Json(result, "text/html");
        }
        #endregion
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值