using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Net.Configuration;
namespace BCore.PubFunction
{
public class MailHandler
{
public bool passwordToEmail(string usermail, string newpassword, string loginname)
{
try
{
System.Configuration.Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/");
MailSettingsSectionGroup settings = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings");
System.Net.NetworkCredential credential = new System.Net.NetworkCredential(settings.Smtp.Network.UserName, settings.Smtp.Network.Password);
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
//msg.To.Add("itblackhole@163.com");//可以发送多人
msg.To.Add(usermail);
msg.From = new MailAddress("itblackhole@gmail.com", "*******", System.Text.Encoding.UTF8); /*3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
msg.Subject = "黑核软件技术服务有限公司";//邮件标题
msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
//msg.Body = "邮件内容";
//邮件内容 ,设置IsBodyHtml为真时,下面的代码才生效
msg.Body ="<table cellpadding=/"3/" cellspacing=/"3/" border=/"0/" width=/"60%/">";
msg.Body +="<tr>";
msg.Body +=" <td>";
msg.Body +=" <b>"+loginname +":</b>";
msg.Body +=" </td>";
msg.Body +="</tr>";
msg.Body +="<tr>";
msg.Body +=" <td> 您好!</td>";
msg.Body +="</tr>";
msg.Body += "<tr>";
msg.Body += " <td> 您的密码是:<span style =/"font-size :large ; color :Red ;/">" + newpassword + "</span>,请注意保管!</td>";
msg.Body += "</tr>";
msg.Body +="<tr>";
msg.Body +=" <td style =/"text-align :right ;/">公司客服部</td>";
msg.Body +="</tr>";
msg.Body +="<tr>";
msg.Body +=" <td style =/"text-align :right ;/">"+DateTime .Now.ToString ("yyyy年MM月dd日 HH:mm:ss")+"</td>";
msg.Body +="</tr>";
msg.Body +="</table>";
msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
//msg.IsBodyHtml = false;//是否是HTML邮件
msg.IsBodyHtml = true;
msg.Priority = MailPriority.High;//邮件优先级
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential(System.Configuration.ConfigurationManager.AppSettings["emailAddress"].ToString(), System.Configuration.ConfigurationManager.AppSettings["emailPassword"].ToString());//邮箱和密码,一般是写在web.config中,这里只是为了简单的理解.
client.Port = 587;//使用的端口
client.Host = "smtp.gmail.com";
client.EnableSsl = true;//经过ssl加密
object userState = msg;
try
{
//client.SendAsync(msg, userState);
//简单一点儿可以client.Send(msg);
client.Send(msg);
//this.Label1 .Text ="发送成功";
return true;
}
catch (System.Net.Mail.SmtpException ex)
{
//this.Label1.Text = "发送邮件出错" + ex.ToString ();
return false;
}
}
catch (Exception ex)
{
return false;
}
}
/// <summary>
/// 生成密码
/// </summary>
/// <returns></returns>
public string makePassword()
{
string words = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz1234567890";
string tmpstr = "";
int iRandNum;
Random rnd = new Random();
for (int i = 0; i <= 8; i++)
{
iRandNum = rnd.Next(words.Length);
tmpstr += words[iRandNum];
}
return tmpstr;
}
}
}
web.config配置文件中对邮箱的一些参数进行配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<!--电子邮箱的配置信息-->
<add key ="emailAddress" value ="itblackhole@gmail.com"/>
<add key ="emailPassword" value ="huyo86@huyo"/>
</appSettings>
………………
具体的实现:
protected void btnSubmit_Click(object sender, EventArgs e)
{
BLL.TuUsers_BasicInfo info=new ESite.BLL.TuUsers_BasicInfo ();
Model.TuUsers_BasicInfo model = new ESite.Model.TuUsers_BasicInfo();
int userId=isValidata(this.txtLoginName.Text.Trim(), this.txtEmail.Text.Trim());
//登录名和邮箱名是否通过用户验证
if (userId!=0)
{
MailHandler mail = new MailHandler();
string newPassword = mail.makePassword().ToString();
model=info.GetModel (userId );
model.UbscloginPwd = InfoEncrypt.mToLower(this.txtLoginName.Text.Trim() + newPassword);
try
{
info.Update(model);
if (mail.passwordToEmail(this.txtEmail.Text.Trim(), newPassword, this.txtLoginName.Text.Trim()))
{
PublicMethod.MessageBox("密码已发送至邮箱,请查收!");
}
else
{
PublicMethod.MessageBox("密码发送失败!");
}
}
catch
{
PublicMethod.MessageBox("更新用户数据时失败!");
}
}
else
{
PublicMethod.MessageBox("对不起,您所填写的信息用误!");
}
}
private int isValidata(string loginName, string userEmail)
{
int result = 0;
BLL.TuUsers_BasicInfo info = new ESite.BLL.TuUsers_BasicInfo();
try
{
DataTable tempTable = info.getUserInfo(loginName, userEmail).Tables[0];
if (tempTable != null && tempTable.Rows != null && tempTable.Rows.Count > 0)
{
result = ObjectMethod.ObjectToInt(tempTable.Rows[0][0]);
}
else
{
result = 0;
}
}
catch
{
result = 0;
}
return result;
}