前两天在做一个密码找回功能时遇到的问题
想用email形式把密码发送到用户邮箱中
本来想用163的邮箱,可是新申请的163邮箱据说不支持smtp,也试过
我用以前(大概06年以前)申请的163可以发送,新申请的不能发送
后来我又试了一下sina的,可是sina的在发送的时候会出现“发送失败smtp不安全全……”之类的错误,在网上找了一下说是sina不支持
最后就选择了gmail了
下面是我写的方法用gmail可以成功的发送
如果你想发送html格式只要把IsBodyHtml 属性设置成true就可以
有的在发送中文html时会出现乱码,加上BodyEncoding 设置一下就可以了
using System.Net.Mail;
using System.Net;
MailAddress from = new MailAddress("××××@gmail.com");
MailAddress to = new MailAddress(toemail);
MailMessage message = new MailMessage(from,to);
message.Subject =emailtile;//标题
message.IsBodyHtml = true;//是否用html格式发送
message.BodyEncoding = System.Text.Encoding.GetEncoding( "utf-8");//发送时的编码
message.Body = mes;
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("××××@gmail.com", "pwd");
try
{
client.Attachments.Add(new MailAttachment(inputMailAttachment.PostedFile.FileName)); //添加附件
client.Send(message);
return "发送成功";
}
catch (Exception ex)
{
return ex.Message;
}
对了还看到一个帖子是读取一个网页然后发送到邮箱里,在读取的时候会出现乱码
我看了一下只要改一个流的编码就可以解决(改成什么自己试吧)
using System.IO;
public static string GetHtml(string url)
{
WebRequest objRequest = System.Net.HttpWebRequest.Create(url);
StreamReader sr = new StreamReader(objRequest.GetResponse().GetResponseStream(), System.Text.Encoding.GetEncoding("gb2312"));
string result = sr.ReadToEnd();
sr.Close();
return result;
}