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;
}
通常我们会用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;
}
Asp.net2.0发送电子邮件
ASP.NET2.0 文本编辑器FCKeditor
ASP.NET2.0 Global.asax Methods
ASP.NET2.0 文本编辑器FCKeditor
ASP.NET2.0连接SQL Server数据库详解
ASP.NET2.0中用Gridview控件操作数据
ASP.NET2.0服务器控件之Render方法
ASP.NET2.0连接SQL Server数据库详解
ASP.NET2.0服务器控件之自定义状态管理
VS2005和ASP.NET2.0中使用强类型数据
ASP.NET2.0_缓存 - 唐太宗的专栏 - CSDNBlog
ASP.NET2.0连接SQL Server数据库详解
VS2005和ASP.NET2.0中使用强类型数据
ASP.NET2.0_缓存 - 唐太宗的专栏 - CSDNBlog
ASP.NET2.0连接SQL Server数据库详解
ASP.NET2.0 Session使用的经典分析文章
asp.net2.0 站点登录,导航与权限管理
ASP.NET2.0+SQL Server2005构建多层应用
数据绑定控件再ASP.NET1.X和ASP.NET2.0的区别
电子邮件email验证代码-asp
ASP.NET2.0里的web.config配置接口API(转)
ASP.NET2.0服务器控件之创建自定...-外包与创业
ASP.NET2.0中"无法显示 XML 页。 使用 XSL 样式表无法查看 XML 输入...
asp.net2.0中读取web.config数据库连接字符串2种方法