邮件的发送

来源:互联网 发布:什么网络兼职比较靠谱 编辑:程序博客网 时间:2024/06/06 02:04

最近做一个项目涉及到如何发送邮件,起初做的时候也是很迷茫,稍微到网上百度了一些资料,但发现网上有些代码并不能执行,于是自己对此作了些总结,下面将自己的经验和大家一起分享下。

·        主要代码如下:

public ActionResultAskForLeave(string subject,string fromAddress,stringtoAddress)

        {

             SmtpClientsmtp = new SmtpClient("smtp.gmail.com", 587);

             smtp.EnableSsl = true;

             MailAddressfromAdd = new MailAddress(fromAddress,"sender");

             MailAddresstoAdd = new MailAddress(toAddress,"receiver");

             MailMessagemessage = new MailMessage(fromAdd,toAdd);

             message.Subject = subject;

             message.Body = body;

             smtp.Credentials = new NetworkCredential(fromAddress,"发件人的密码");

             //message.Priority= MailPriority.High;

             //smtp.DeliveryMethod= SmtpDeliveryMethod.Network;

             //smtp.UseDefaultCredentials= true;

             //smtp.Timeout= 2000;

 

             try

             {

                   smtp.Send(message);

                  returnRedirectToAction("Successful","Home");

             }

             catch(Exception e)

             {

                  Console.WriteLine("Exception is:" + e.ToString());

             }

             returnView();

        }

由于我是通过MVC做的,可能在你写代码时需要做一些修改,方法中的三个参数subject,fromAddress,toAddress分别为邮件标题,发件箱,收件箱

·        值得说明的是SmtpClient("smtp.gmail.com",587);

这当中的587定义的是发件箱的端口号,我这里用的是gamil.com邮箱,如果你想用其它邮箱如163,你还得修改成163邮箱的端口号。

·        还有一点很重要             smtp.EnableSsl =true;

这一句代码看似很简短,但是你必须把它加上,这是决定你邮件是否能成功发送的关键之处。

它的意思是定义Ssl是否能访问SMTP邮箱的服务器,而且这句话必须写在发送邮件语句之前,否则的话就无法访问服务器,也就不能发送了,起初我自己被这个问题困扰了许久,反复阅读代码都没有找出原因,所以在这个问题上浪费了许多时间与精力,在这里我把它标记出来,希望读者不要像我这样走入误区。

至于其它几句代码意义就比较明了

MailAddress fromAdd = newMailAddress(fromAddress, "sender");//设置你的发件箱

同理

MailAddress toAdd = newMailAddress(toAddress, "receiver");//设置收件人邮箱

   smtp.Credentials = newNetworkCredential(fromAddress,"发件人的密码");//你邮箱的密码

上面我注释掉的一些语句,自己可以加上进行属性设置,当然不加也可以成功发送。

希望能对大家有点帮助哦

 

 

原创粉丝点击