SMTP协议
这段时间在看网络高级编程,对于SMTP协议C#进行了很多封装,使我们使用起来相当方便
SMTP是英文Simple Mail Transfer Protocol的缩写,意为简单邮件传输协议,默认端口为25
在SMTP协议中,电子邮件由三部分组成,信封、首部和正文。
1) 信封
信封包括发信人的邮件地址和接收人的邮件地址,用两条SMTP命令指明。
① MAIL FROM:<发信人的地址>,告诉SMTP服务器发信人的地址。
② RCPT TO:<收信人的地址>,告诉SMTP服务器收信人的地址。
2) 首部
首部中常用命令:
① FROM:<姓名><邮件地址>,表明邮件发送者是谁。
② TO:<姓名><邮件地址>,表明邮件接收者是谁。
③ SUBJECT:<邮件标题>,表明邮件的主题。
④ DATE:<时间>,表明发邮件的时间。
⑤ REPLY-TO:<邮件地址>,表明邮件的回复地址。
⑥ Content-Type:<邮件类型>,表明邮件包含文本、HTML超文本和附件的哪些类型。
⑦ X-Priority:<邮件优先级>,表明邮件的发送优先级。
⑧MIME-Version:<版本>,MIME的意思是Multipurpose Internet Mail Extensions,即多用途Internet邮件扩展标准,它对传输内容的消息、附件及其他的内容定义了格式。
3) 正文
正文是邮件的内容。首部以一个空行结束,再下面就是正文部分。
4) 结束符号
邮件以“.”结束。
对于C#发送邮件我们只需要了解几个基本的类就行了
1) System.Net命名空间下的NetworkCredential类
NetworkCredential myCredentials = new NetworkCredential("发件人邮件地址", "密码");//提供发件人的用户名发密码
MailAddress类用于提供发件人和收件人的邮件地址,常用形式为:
MailAddress from = new MailAddress("发件人邮件地址");
MailAddress to = new MailAddress("收件人邮件地址");
MailMessage类用于提供邮件的信息,包括主题、内容、附件、信息类型等,常用形式为:
MailMessage message = new MailMessage(from, to);
message.Subject = "主题";
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.Body = "邮件内容";
message.BodyEncoding = System.Text.Encoding.UTF8;
Attachment类用于提供附件对象,常用形式为
Attachment attachFile = new Attachment("文件名");
message.Attachments.Add(attachFile);
5) SmtpClient类用于发送邮件,常用形式为:
SmtpClient client = new SmtpClient("邮件服务器地址");
client.Send(message);
发送邮件方法:
private void SendMail(SmtpClient client, MailAddress from, string p, MailAddress to, MailMessage message)
{
//不使用默认凭证,注意此句必须放在client.Credentials的上面
client.UseDefaultCredentials = false;
//指定用户名和密码
client.Credentials = new NetworkCredential(from.Address, p);
//邮件通过网络发送到服务器
client.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
client.Send(message);
}
catch { throw; }
finally
{
//及时释放占用资源
message.Dispose();
}
}
以上几个类就能实现C#对SMTP协议的使用,能进行邮件的基本发送,相对来说很简单,都不需要调用SMTP的相关命令
下面的例子就是对上面的几个类的运用,能进行邮件的发送/Files/fujinliang/SendMailExample.rar