NET实现发送邮件

由于自己没有做过后台邮件发送的系统,突然心血来潮,就去网上找了一下代码,学习了一下NET发送邮件,结果真是一路艰辛,最后还是解决了问题,下面我就把我的部分代码贴出来,以备后续的学习,和与大家共同学习:

下面的所有代码是在vs中调试过的,使用ASP .NET MVC开发

前端代码:

@using (Html.BeginForm("SendMail3", "Home", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
            {
    
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.Label("收件地址", new { @class = "col-md-2 control-label" })
@Html.TextBox("MailTo")
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.Label("邮件标题", new { @class = "col-md-2 control-label" })
@Html.TextBox("Title")
@Html.Label("邮件内容", new { @class = "col-md-2 control-label" })
@Html.TextBox("Message")
}

需要引用的程序集:

using System.Net;
using System.Net.Mail;
using System.Text;


NET后台代码:
  public ActionResult SendMail3(string MailTo, string Title, string Message)
        {
            try
            {
                //发件人地址
                var fromAddress = new MailAddress("y******[email protected]", "发件人", Encoding.UTF8);
                //收件人地址
                var toAddress = new MailAddress(MailTo, "收件人", displayNameEncoding: Encoding.UTF8);
                //主题
                string subject = Title;
                //消息主体
                string body = Message;

                var smtp = new SmtpClient
                {
                    //stmp服务器
                    Host = "smtp.163.com",
                    //端口
                    Port = 25,
                    //是否允许SSL(安全套接字)
                    EnableSsl = true,
                    UseDefaultCredentials = true,
                    DeliveryMethod = SmtpDeliveryMethod.Network,
                    //凭据(注册邮件帐户 ,163邮箱客户端授权码【网易邮箱的开启STMP服务需要开启客户端授权码】)
                    Credentials = new NetworkCredential("y****[email protected]", "******")
                };
                //消息
                var message = new MailMessage(fromAddress, toAddress)
                {
                    //优先级
                    Priority = MailPriority.High,
                    Subject = subject,
                    Body = body
                };
                //发送邮件
                smtp.Send(message);
            }
            catch (Exception ex)
            {
                return Content("错误:" + ex.Message + "," + ex.InnerException);
            }
            return Content("成功");
        }

操作界面和成功界面截图:

NET实现发送邮件_第1张图片


NET实现发送邮件_第2张图片


其中,在调试代码的过程中遇到了各种各样的问题,下面我来描述一下部分的问题:

由于使用的是网易邮箱作为发件人,结果出现了各种问题,在以前为了使用客户端进行邮箱的登录,就设置过客户端授权码,结果很长时间过去了,忘记了授权码,之后就一直不能发送成功,错误提示为:不允许使用邮箱名称。 服务器响应为:authentication is required

解决方法就是:重置了客户端授权码,如果对授权码不太了解,可以参照下面的链接:

http://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac24a2130dd2fad05b1

你可能感兴趣的:(.Net)