ASP.NET发送电子邮件
2014-03-07 20:35
369 查看
1.补充知识
(1)POP3和SMTP服务器是什么?
简单点来说:POP3 用于接收电子邮件 ,SMTP 用于发送电子邮件。
(1)POP3具体指什么?
POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义
(2)SMTP具体是指什么?
SMTP的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
2.System.Net.Mail
使用ASP.NET发送电子邮件,需要引用System.Net.Mail命名空间。System.Net.Mail 命名空间包含用于将电子邮件发送到简单邮件传输协议 (SMTP) 服务器进行传送的类。
(1)命名空间下有三个比较主要的类:
MailMessage:提供属性和方法来创建一个邮件消息对象,即邮件内容。
Attachment:提供属性和方法来创建一个邮件附件对象,即邮件附件。
SmtpClient:将电子邮件传输到您指定用于邮件传送的 SMTP 主机。
MailAddress
(2)MailMessage类:
From:发送邮件的地址
To:接收邮件的地址
Subject:邮件的标题
Priority:邮件的优先级(分别为为High,Low,Normal)
Attachments:电子邮件的数据的附件集合
Bcc:密送地址
Cc:抄送地址
Body:邮件正文
SubjectEncoding:电子邮件的主题内容使用的编码
IsBodyHtml:邮件正文是否为 Html 格式的值
详细参考:MailMessage
(3)Attachment类:
详细参考:Attachment
(4)SmtpClient类:
DeliveryMethod:指定如何处理待发的电子邮件
Host:SMTP 事务的主机的名称或 IP 地址
Credentials:设置用于验证发件人身份的凭据
详细参考:SmtpClient
3.ASP.NET发送邮件两种方式
(1)通过邮件服务提供商的SMTP来发送邮件
首先需要注册对应服务提供商免费邮箱,因为你要使用邮件服务提供商的SMTP,他们需要对身份进行验证,这样可以避免产生大量的垃圾邮件。
有三个是重要的信息:SMTP服务器、用户名、密码。从网上收集了几个类,可以参考下。
(2)利用本机的SMTP虚拟服务器的SMTP来发送邮件
需要进行SMTP配置,还是第一种简单实用。
4.参考资料:常用邮件服务器
gmail.com:
POP3服务器地址:pop.gmail.com
SMTP服务器地址:smtp.gmail.com
qq.com:
POP3服务器地址:pop.qq.com
SMTP服务器地址:smtp.qq.com
163.com:
POP3服务器地址:pop.163.com
SMTP服务器地址:smtp.163.com
sina.com:
POP3服务器地址:pop3.sina.com.cn
SMTP服务器地址:smtp.sina.com.cn
yahoo.com:
POP3服务器地址:pop.mail.yahoo.com
SMTP服务器地址:smtp.mail.yahoo.com
sohu.com:
POP3服务器地址:pop3.sohu.com
SMTP服务器地址:smtp.sohu.com
china.com:
POP3服务器地址:pop.china.com
SMTP服务器地址:smtp.china.com
21cn.com:
POP3服务器地址:pop.21cn.com
SMTP服务器地址:smtp.21cn.com sina.com:
实例下载
2-------------
第一种:
//emailaddress邮件接收者地址
//mailcontent邮件主体内容
//mailtitle邮件标题
//mailsubject邮件主题
public bool SendMail(string emailaddress,string mailcontent,string mailtitle,string mailsubject)
{
MailMessage onemail = new MailMessage();
string myEmail=""; //发送邮件的邮箱地址
string myPwd="11111111"; //发送邮件的邮箱密码
onemail.BodyEncoding=System.Text.Encoding.UTF8;
onemail.IsBodyHtml=true;
onemail.From = new MailAddress(myEmail);
onemail.To.Add (new MailAddress(emailaddress)) ;
onemail.Subject = mailsubject;
onemail.Body = mailcontent;
onemail.BodyEncoding = System.Text.Encoding.UTF8;
SmtpClient clint = new SmtpClient("mail.iapechina.com");//发送邮件的服务器
clint.UseDefaultCredentials = false;
clint.Credentials = new System.Net.NetworkCredential(myEmail,myPwd);
clint.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
clint.Send(onemail);
return true;
}
catch (Exception ex) {
return false;
}
}
第二种:
在web.config中做如下设置
<configuration>
<system.net>
<mailSettings>
<smtp from=""> <!--要发送邮件的邮箱-->
<network host="mail.iapechina.com" password="1111111" port="25" userName="" defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
//emailaddress邮件接收者地址
//mailcontent邮件主体内容
//mailtitle邮件标题
//mailsubject邮件主题
private bool SendMail(string emailaddress,string mailcontent,string mailtitle,string mailsubject)
{
MailMessage onemail = new MailMessage();
onemail.BodyEncoding=System.Text.Encoding.UTF8;
onemail.IsBodyHtml=true;
onemail.To.Add (new MailAddress(emailaddress)) ;
onemail.Subject = mailsubject;
onemail.Body = mailcontent;
onemail.BodyEncoding = System.Text.Encoding.UTF8;
SmtpClient clint = new SmtpClient();
try
{
clint.Send(onemail);
return true;
}
catch (Exception ex) {
return false;
}
}
总结:虽然在.NET 2.0下,使用System.Web.Mail发送邮件很简单,在错误的时候也可以得到比较详细的异常信息,但是有时候出现的问题也会让你摸不着头脑。最经常出现的是,当你的机器有安装杀毒防火墙,有可能会发不出邮件,但是提示信息却让你无法诊断是哪里出问题了,大意是邮件发送被拒绝。出现这种事况是由于防火墙拒绝了我们对25端口的使用,从而造成无法与SMTP服务器正常通信。解决办法就是关闭它了,相信网上已经有很多的案例了。还有一点要特别注意,要发送邮件的机器必须是直接外网的,由于公司是通过代理上网,所以这个印象特别深。
上面的代码还有一点需要注意,MailMessage对象的From值必须和配置文件中From值是一样的,这里好像也可以不用设,大家可以试一下。
(1)POP3和SMTP服务器是什么?
简单点来说:POP3 用于接收电子邮件 ,SMTP 用于发送电子邮件。
(1)POP3具体指什么?
POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义
(2)SMTP具体是指什么?
SMTP的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
2.System.Net.Mail
使用ASP.NET发送电子邮件,需要引用System.Net.Mail命名空间。System.Net.Mail 命名空间包含用于将电子邮件发送到简单邮件传输协议 (SMTP) 服务器进行传送的类。
(1)命名空间下有三个比较主要的类:
MailMessage:提供属性和方法来创建一个邮件消息对象,即邮件内容。
Attachment:提供属性和方法来创建一个邮件附件对象,即邮件附件。
SmtpClient:将电子邮件传输到您指定用于邮件传送的 SMTP 主机。
MailAddress
(2)MailMessage类:
From:发送邮件的地址
To:接收邮件的地址
Subject:邮件的标题
Priority:邮件的优先级(分别为为High,Low,Normal)
Attachments:电子邮件的数据的附件集合
Bcc:密送地址
Cc:抄送地址
Body:邮件正文
SubjectEncoding:电子邮件的主题内容使用的编码
IsBodyHtml:邮件正文是否为 Html 格式的值
详细参考:MailMessage
(3)Attachment类:
详细参考:Attachment
(4)SmtpClient类:
DeliveryMethod:指定如何处理待发的电子邮件
Host:SMTP 事务的主机的名称或 IP 地址
Credentials:设置用于验证发件人身份的凭据
详细参考:SmtpClient
3.ASP.NET发送邮件两种方式
(1)通过邮件服务提供商的SMTP来发送邮件
首先需要注册对应服务提供商免费邮箱,因为你要使用邮件服务提供商的SMTP,他们需要对身份进行验证,这样可以避免产生大量的垃圾邮件。
有三个是重要的信息:SMTP服务器、用户名、密码。从网上收集了几个类,可以参考下。
#region /// <summary> /// 发送邮件 /// </summary> /// <param name="mailTo">要发送的邮箱</param> /// <param name="mailSubject">邮箱主题</param> /// <param name="mailContent">邮箱内容</param> /// <returns>返回发送邮箱的结果</returns> public static bool SendEmail(string mailTo,string mailSubject,string mailContent) { // 设置发送方的邮件信息,例如使用网易的smtp string smtpServer = "smtp.163.com"; //SMTP服务器 string mailFrom = "XXX@163.com"; //登陆用户名 string userPassword = "XXX";//登陆密码 // 邮件服务设置 SmtpClient smtpClient=new SmtpClient(); smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式 smtpClient.Host = smtpServer; //指定SMTP服务器 smtpClient.Credentials = new System.Net.NetworkCredential(mailFrom, userPassword);//用户名和密码 // 发送邮件设置 MailMessage mailMessage = new MailMessage(mailFrom, mailTo); // 发送人和收件人 mailMessage.Subject = mailSubject;//主题 mailMessage.Body = mailContent;//内容 mailMessage.BodyEncoding = Encoding.UTF8;//正文编码 mailMessage.IsBodyHtml = true;//设置为HTML格式 mailMessage.Priority = MailPriority.Low;//优先级 try { smtpClient.Send(mailMessage); // 发送邮件 return true; } catch (SmtpException ex) { return false; } }
(2)利用本机的SMTP虚拟服务器的SMTP来发送邮件
需要进行SMTP配置,还是第一种简单实用。
4.参考资料:常用邮件服务器
gmail.com:
POP3服务器地址:pop.gmail.com
SMTP服务器地址:smtp.gmail.com
qq.com:
POP3服务器地址:pop.qq.com
SMTP服务器地址:smtp.qq.com
163.com:
POP3服务器地址:pop.163.com
SMTP服务器地址:smtp.163.com
sina.com:
POP3服务器地址:pop3.sina.com.cn
SMTP服务器地址:smtp.sina.com.cn
yahoo.com:
POP3服务器地址:pop.mail.yahoo.com
SMTP服务器地址:smtp.mail.yahoo.com
sohu.com:
POP3服务器地址:pop3.sohu.com
SMTP服务器地址:smtp.sohu.com
china.com:
POP3服务器地址:pop.china.com
SMTP服务器地址:smtp.china.com
21cn.com:
POP3服务器地址:pop.21cn.com
SMTP服务器地址:smtp.21cn.com sina.com:
实例下载
2-------------
第一种:
//emailaddress邮件接收者地址
//mailcontent邮件主体内容
//mailtitle邮件标题
//mailsubject邮件主题
public bool SendMail(string emailaddress,string mailcontent,string mailtitle,string mailsubject)
{
MailMessage onemail = new MailMessage();
string myEmail=""; //发送邮件的邮箱地址
string myPwd="11111111"; //发送邮件的邮箱密码
onemail.BodyEncoding=System.Text.Encoding.UTF8;
onemail.IsBodyHtml=true;
onemail.From = new MailAddress(myEmail);
onemail.To.Add (new MailAddress(emailaddress)) ;
onemail.Subject = mailsubject;
onemail.Body = mailcontent;
onemail.BodyEncoding = System.Text.Encoding.UTF8;
SmtpClient clint = new SmtpClient("mail.iapechina.com");//发送邮件的服务器
clint.UseDefaultCredentials = false;
clint.Credentials = new System.Net.NetworkCredential(myEmail,myPwd);
clint.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
clint.Send(onemail);
return true;
}
catch (Exception ex) {
return false;
}
}
第二种:
在web.config中做如下设置
<configuration>
<system.net>
<mailSettings>
<smtp from=""> <!--要发送邮件的邮箱-->
<network host="mail.iapechina.com" password="1111111" port="25" userName="" defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
//emailaddress邮件接收者地址
//mailcontent邮件主体内容
//mailtitle邮件标题
//mailsubject邮件主题
private bool SendMail(string emailaddress,string mailcontent,string mailtitle,string mailsubject)
{
MailMessage onemail = new MailMessage();
onemail.BodyEncoding=System.Text.Encoding.UTF8;
onemail.IsBodyHtml=true;
onemail.To.Add (new MailAddress(emailaddress)) ;
onemail.Subject = mailsubject;
onemail.Body = mailcontent;
onemail.BodyEncoding = System.Text.Encoding.UTF8;
SmtpClient clint = new SmtpClient();
try
{
clint.Send(onemail);
return true;
}
catch (Exception ex) {
return false;
}
}
总结:虽然在.NET 2.0下,使用System.Web.Mail发送邮件很简单,在错误的时候也可以得到比较详细的异常信息,但是有时候出现的问题也会让你摸不着头脑。最经常出现的是,当你的机器有安装杀毒防火墙,有可能会发不出邮件,但是提示信息却让你无法诊断是哪里出问题了,大意是邮件发送被拒绝。出现这种事况是由于防火墙拒绝了我们对25端口的使用,从而造成无法与SMTP服务器正常通信。解决办法就是关闭它了,相信网上已经有很多的案例了。还有一点要特别注意,要发送邮件的机器必须是直接外网的,由于公司是通过代理上网,所以这个印象特别深。
上面的代码还有一点需要注意,MailMessage对象的From值必须和配置文件中From值是一样的,这里好像也可以不用设,大家可以试一下。
相关文章推荐
- asp.net 发送电子邮件的方法
- ASP.NET 2.0中发送电子邮件剖析之一
- 从ASP.NET页面发送电子邮件
- ASP.NET 2.0发送电子邮件中存在的问题
- 在ASP.net中发送电子邮件
- ASP.NET 2.0中发送电子邮件剖析之一
- ASP.NET 2.0发送电子邮件中存在的问题
- ASP.NET 2.0发送电子邮件全面剖析之二
- 一个发送电子邮件的类(C#&asp.net2)
- asp.net 发送电子邮件的方法
- ASP.NET发送电子邮件
- ASP.NET 2.0中发送电子邮件
- ASP.NET发送电子邮件
- 关于ASP.NET 发送电子邮件
- asp.net发送电子邮件
- ASP.NET 2.0中发送电子邮件
- ASP.NET 2.0中发送电子邮件剖析之一
- asp.net 使用html模板发送电子邮件
- ASP.NET(C#)发送电子邮件的方法
- ASP.NET发送电子邮件