使用C#发送邮件实践

一般来说,安全起见,现在的网站用户数据库中保存的密码信息都不是明码了,都保存经过编译的字段。那么一旦用户忘记了密码怎么办呢?这时候就需要“密码重置”功能了,给用户一个可认证的安全链接,让用户重新设置密码。结合密保注册邮箱,直接将重置密码的链接发送到邮箱是最方便的一种方案。我就用了.net发送邮件的功能。

 

先看代码:

using System.Net.Mail;

using System.Net;

        ///

        /// 发送邮件

        ///

        /// 目标邮箱

        /// 发件人地址

        /// 发件人姓名

        /// 邮件标题

        /// 邮件内容

        public void sendMail(string addr, string srcaddr, string srcname, string title, string text)

        {

            MailAddress from = new MailAddress(srcaddr, srcname); //发件人信息,实际上这个是可以和发送邮箱不一致的,只是显示给收件人而已

            MailMessage mail = new MailMessage();

            //设置邮件的标题

            mail.Subject = title;

            //设置邮件的发件人

            mail.From = from;

 

            //设置邮件的收件人

            // 如果要发送给多人,则循环多次Add

//mail.To.Add(new MailAddress("zhangsan@hotmail.com", "张三"));

            mail.To.Add(addr);// 简单这样写也可以

 

            //设置邮件的抄送收件人

            //抄送多人也多次Add

            //mail.CC.Add(new MailAddress("Lisi@hotmail.com", "李四");

 

            //设置邮件的内容

            mail.Body = text;

            //设置邮件的格式

            mail.BodyEncoding = System.Text.Encoding.UTF8;

            mail.IsBodyHtml = true;

            //设置邮件的发送级别

            mail.Priority = MailPriority.Normal;

 

            //最后创建Smpt客户端,发送,我最终用的是gmail的smpt服务器

            SmtpClient client = new SmtpClient("smtp.gmail.com",587);//smpt服务器应该根据srcaddr来进行解析,我这儿直接这么写了。

            client.Credentials = new NetworkCredential("abc@gmail.com", "abc");//邮箱地址,邮箱密码,这个密码必须是实际有用的才行

            client.EnableSsl = true;

            client.Send(mail);

        }

 

编写代码过程非常简单,主要的困难在于实际测试的时候邮箱服务器的选择。我开始使用了QQ邮箱的smpt,包括去QQ邮箱开通smpt服务等等,最终都没有发送成功过,不知道什么原因。后来又测试21cn.com的smpt服务器,结果是运行中没有发生什么异常,可是目标邮箱很难收到邮件,延迟很多,而且测试很多次只有一个送达了。最后选用了gmail邮箱。

总结起来的话,写这样的功能,自身代码并不困难,更多的是外在条件的筛选。相信很多人也和我一样写了代码,却怎么也收不到发出去的邮件,苦想几天都不知道自己怎么就错啦。我要说的就是,换个邮箱再试试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值