System.Net.Mail 发送邮件 SMTP协议

System.Net.Mail 发送邮件

最近几天项目不太紧张,突然对发邮件有点兴趣,随即的研究了一下,本着Apache的开元精神和自身能力的提高以及大家的相互交流,总结了一下经验和大家分享。

说起发送邮件我们首先要对SMTP/Pop3 有一定的了解,当然高手可以跳过。

简单的说SMTP是用来发送E-Mail邮件所遵循的协议,Pop3是接收E-mail所遵循的协议!

SMTP(Simple Mail Transfer Protocol) 即简单邮件传输协议,他是一组用于由源地址到目的地址传送邮件的规则,简单的说就是:From-->To

的传送规则。由SMTP来控 制信件中转的方式。SMTP属于TCP/IP家族中的一员,它帮助每一台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,我 们就把E-Mail寄到收信人的服务器上了,这个过程只需要几分钟。SMTP服务器则遵循SMTP协议发送的邮件服务器,用来中转你发出的电子邮件。

POP3 (Post Office Protocol) 即邮局协议的第3个版本 它规定怎样将计算机连接到Internet的邮件服务器和下载电子邮件的协议。它是因特网第一个离线邮件协议标准,POP3 允许用户从服务器端得油价下载到本地存储,同时删除保存在服务器端的邮件,而POP3 服务器遵循POP3 协议的接收服务器,又来接收邮件。

做这两段说明,只是想给同我一样的初学者对于SMTP/Pop3一个简单的介绍使大家有一定的了解,那么下面我们切入正题吧。

在ASP.NET中对于发邮件其实有两个版本。早期的有在System.Web.Mail,而在2.0版本开始就推出了System.Net.Mail 作为发送邮件的类,在此文中,我只对System.Net.Mail 做介绍,以后System.Web.Mail 的一些我也会给大家。

下面就用代码说话吧:

/// <summary>
/// 发送邮件
/// </summary>
/// <param name="from">发件人</param>
/// <param name="to">收件人</param>
/// <param name="subject">邮件主题</param>
/// <param name="content">邮件内容</param>
/// <param name="host">SMTP事物的主机名称</param>
/// <param name="port">端口号默认25 可以为空</param>
/// <param name="pass">发件邮箱密码</param>
/// <param name="isHtml">是否用HTML格式发送</param>
/// <param name="enableSSL">是否用加密连接</param>
/// <param name="shiledHead">是否屏蔽发送到垃圾邮件中</param>
/// <returns>True Or False</returns>
private bool SendEmail(string from, string pass, string to, string subject, string content, string host, string port, bool isHtml, bool enableSSL, bool shiledHead)
{
MailAddress Efrom = new MailAddress(from);
MailMessage mail = new MailMessage();
#region//可屏蔽垃圾箱的功能
if (shiledHead)
{
mail.Headers.Add("X-Mailer","Tom");
mail.Headers.Add("X-Priority", "3");
mail.Headers.Add("X-MSMail-Priority", "Normal");
mail.Headers.Add("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2900.2869");
mail.Headers.Add("ReturnReceipt", "1");
}
#endregion
//邮件主题
mail.Subject = subject;
//发件人
mail.From = Efrom;
//收件人
mail.To.Add(new MailAddress(to));
//邮件内容
mail.Body = content;
//设置邮件编码
mail.BodyEncoding = System.Text.Encoding.UTF8;
//是否用HTML格式显示
mail.IsBodyHtml = isHtml;
//邮件的优先级(高|正常|低)
mail.Priority = MailPriority.High;
//邮件发送通知
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
//SMTP传输协议
SmtpClient client = new SmtpClient();
//设置用于SMTP事物的主机名称,填IP地址也可以
client.Host = host;
//设置用于SMTP事物的端口,默认就是25
if (String.IsNullOrEmpty(port)) client.Port = 25;
else client.Port = Int32.Parse(port);
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(from, pass);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = enableSSL;
try
{
client.Send(mail);
return true;
}
catch (Exception ex)
{

Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);

return false;
}
}

注明:只是做 方法的解释,对异常没有做详细的处理,大家在运用的时候需要相应的加上try{}catch(){}块!

SMTP/POP3 参数链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值