Asp.net2.0发送电子邮件

来源:百度文库 编辑:神马文学网 时间:2024/04/29 07:16:16
文:Ryo
通常我们会用JMail之类的第三方工具,来解决邮件的接收和发送等问题的。但是如果客户的服务器是租用的不能安装这些工具的时候,就可以考虑用.net2.0自己写一个发送和接收邮件的程序。
首先要引用以下命名空间:
using System.Net;
using System.Net.Mail;
using System.Net.Sockets;
然后首先是发送邮件的程序,比较简单,网上搜索到的也是大同小异:
MailAddress from = new MailAddress(发邮件的email地址);
MailAddress to = new MailAddress(收邮件的email地址);
MailMessage mailobj = new MailMessage(from, to);
mailobj.Subject = funcEncode(你的邮件标题);
注意,这里的funcEncode(见附文)是对文章的标题进行编码转换,因为邮件系统使用的是MIME协议,通常会用到QP编码(标题等短字符)和base64编码(文章内容等长字符),如果不进行编码转换,收邮件的邮箱通常会接收中文邮件的时候出现乱码,或者会被过滤而收不到。
mailobj.Body = “你的邮件正文”;
mailobj.IsBodyHtml = true;
mailobj.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");
mailobj.Priority = MailPriority.High;
如果有附件:
if(aFileUpload.PostedFile.ContentLength > 0)
{
mailobj.Attachments.Add(new Attachment(aFileUpload.PostedFile.FileName));
}
根据自己的邮箱,选择发邮件的SMTP:
SmtpClient smtp = new SmtpClient("smtp.163.com");
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential(你的邮箱, 邮箱密码);
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Send(mailobj);
发邮件的程序基本完成了。
附:
//对标题进行编码转换
public static string funcEncode(string aStr)
{
string c = "";
aStr = System.Web.HttpUtility.UrlEncode(aStr, System.Text.Encoding.GetEncoding("GB2312"));
int j = 0;
for(int i = 0; i < aStr.Length; i++)
{
if(aStr[i] == '%')
{
c += "=";
j = i;
}
if(i - j < 3 && i - j > 0 && j != 0)
{
c += aStr[i].ToString().ToUpper();
}
else
{
if(aStr[i] != '%')
c += aStr[i];
}
}
//为了接收邮件不出现乱码,我加了一个标头,声明用GB2312转换而成的QP编码。
return "=?GB2312?Q?" + c + "?=";
}
//以下就是在读邮件的时候用的解码。
public static string funcDecode(string aStr)
{
string d = "";
d = aStr.Replace("=", "%");
d = System.Web.HttpUtility.UrlDecode(d, System.Text.Encoding.GetEncoding("GB2312"));
return d;
}