导航

邮件发送器

Posted on 2012-05-07 10:16  softwaror  阅读(432)  评论(0编辑  收藏  举报

最近又把某个账号密码忘记了,在多方设法下,终于通过邮箱的方式非常方便地就找回了,但我随后就想他是怎么实现给你发邮件的呢?这公司肯定不可能安排某些人来专门给忘记密码,注册验证等来发送邮件,一定有某种方法可以自动改善邮件,说不定以后哪天我有个项目也要用到自动发送邮件,我也能用上,所以我就饶有兴趣google后做出一个简单的邮件发送器,如图:

一.首先要说说关于电子邮件发送和接收的3个协议(SMTP,POP3,IMAP)

1.SMTP(Simple Mail Transfer Protocal)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。


2.POP(Post Office Protocol ,即邮局协议),用于电子邮件的接收,现在常用的是第3版,所以为 POP3。POP3采用Client/Server工作模式。当客户机需要服务时,客户端的软件(Outlook Express或FoxMail)将与POP3服务器建立TCP连接,此后要经过POP3协议的三种工作状态,首先是认证过程,确认客户机提供的用户名和密码,在认证通过后便转入处理状态,在此状态下用户可收取自己的邮件或做邮件的删除,在完成响应的操作后客户机便发出quit命令,此后便进入更新状态,将做删除标记的邮件从服务器端删除掉。


3.IMAP(Internet Message Access Protocol的缩写),顾名思义,主要提供的是通过Internet获取信息的一种协议。IMAP像POP那样提供了方便的邮件下载服务,让用户能进行离线阅读,但IMAP还能提供的摘要浏览,如阅读所有的邮件主题、发件人等信息。

代码:

 

 1 View Code 
 2  1             // 实例化一个smtp端
 3  2             SmtpClient client = new SmtpClient();
 4  3             
 5  4             // 设置用户名和密码验证
 6  5             client.Credentials = new System.Net.NetworkCredential(txtUserName.Text,txtPassword.Text);
 7  6             
 8  7             // 设置smtp服务器地址和端口
 9  8             client.Host = txtHost.Text;
10  9             client.Port = Convert.ToInt32(txtPort.Text);
11 10             
12 11             // 实例化一封新的邮件
13 12             MailMessage newMessage = new MailMessage();
14 13             // 设置发送者
15 14             newMessage.From = new MailAddress(txtUserName.Text);
16 15             
17 16             // 可以添加多个接收邮箱
18 17             // newMessage.To.Add(接收邮箱);
19 18             newMessage.To.Add(txtReceiver.Text);
20 19             
21 20             newMessage.Subject = txtSubject.Text;
22 21             // 添加附件,也能多添加
23 22             // newMessage.Attachments.Add(new Attachment(附件路径));
24 23             newMessage.Attachments.Add(new Attachment(txtAttachment.Text));
25 24             // 邮件正文
26 25             newMessage.Body = txtMessage.Text;
27 26             
28 27             try
29 28             {
30 29                 client.Send(newMessage);
31 30             }
32 31             catch(Exception exception)
33 32             {
34 33                 MessageBox.Show("发送失败,原因:" + exception.Message);
35 34             }
36 35             MessageBox.Show("发送成功");