您的位置:首页 > 编程语言 > C#

使用C# 发送Email 邮件方法

2012-05-21 08:52 656 查看
废话少说,直接贴代码。

[code]


1:  usingSystem;
2:  usingSystem.Collections.Generic;
3:  usingSystem.ComponentModel;
4:  usingSystem.Data;
5:  usingSystem.Drawing;
6:  usingSystem.Text;
7:  usingSystem.Windows.Forms;
8:  usingSystem.Net.Mail;
9:  usingSystem.Net.Mime;
10:  usingSystem.IO;
11:
12:  namespaceSendEmail
13:  {
14:     publicpartialclassfrm_Main:Form
15:     {
16:         #regionfields
17:         publicbool_user =false;
18:         publicbool_password =false;
19:         publicbool_ReceiveEmail =false;
20:         #endregion
21:
22:         #regionconstructor(s)
23:         publicfrm_Main()
24:         {
25:             InitializeComponent();
26:             InitEvent();
27:         }
28:         #endregion
29:
30:         #regionInitEvent
31:         publicvoidInitEvent()
32:         {
33:             this.txtUser.Validating +=newCancelEventHandler(txtUser_Validating);
34:             this.txtReceiveEmail.Validating +=newCancelEventHandler(txtReceiveEmail_Validating);
35:             this.txtPassword.Validating +=newCancelEventHandler(txtPassword_Validating);
36:         }
37:         #endregion
38:
39:         #regionmethods
40:         #regionSendEmail
41:         ///<summary>
42:         ///进行邮件发送
43:         ///</summary>
44:         publicvoidSendEmail(stringEmialReceive)
45:         {
46:             try
47:             {
48:                 boolispass =this.ValidateData();
49:                 if(ispass ==false)return;
50:                 //确认smtp服务器地址。实例化一个Smtp客户端
51:                 System.Net.Mail.SmtpClientclient =newSmtpClient(this.cobSmtp.Text);
52:                 //生成一个发送地址
53:                 stringstrSmtp =this.cobSmtp.Text.Substring(this.cobSmtp.Text.IndexOf('.') + 1);
54:
55:                 stringstrFrom =this.txtUser.Text.Trim() +"@"+ strSmtp;
56:                 //构造一个发件人地址对象
57:                 MailAddressfrom =newMailAddress(strFrom,this.txtSendUser.Text,Encoding.UTF8);
58:                 //构造一个收件人地址对象
59:                 MailAddressto =newMailAddress(EmialReceive,this.txtReceiveUser.Text.Trim(),Encoding.UTF8);
60:
61:                 System.Net.Mail.MailMessagemessage =newMailMessage(from, to);
62:
63:
64:                 //为message添加附件
65:                 foreach(TreeNodetnodeinthis.trvList.Nodes)
66:                 {
67:                     //得到文件名
68:                     stringfileName = tnode.Text;
69:                     //判断文件是否存在
70:                     if(File.Exists(fileName))
71:                     {
72:                         //构造一个附件对象
73:                         Attachmentattach =newAttachment(fileName);
74:                         //得到文件的信息
75:                         System.Net.Mime.ContentDispositiondisposition = attach.ContentDisposition;
76:                         disposition.CreationDate =File.GetCreationTime(fileName);
77:                         disposition.ModificationDate =File.GetLastWriteTime(fileName);
78:                         disposition.ReadDate =File.GetLastAccessTime(fileName);
79:                         message.Attachments.Add(attach);
80:                     }
81:                     else
82:                     {
83:                         MessageBox.Show("文件"+ fileName +"未找到!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
84:                     }
85:                 }
86:
87:                 //添加邮件主题和内容
88:                 message.Subject =this.txtTitle.Text.Trim();
89:                 message.SubjectEncoding =Encoding.UTF8;
90:                 message.Body =this.txtContent.Text;
91:                 message.BodyEncoding =Encoding.UTF8;
92:                 message.IsBodyHtml =false;
93:
94:                 //设置邮件的信息
95:                 client.DeliveryMethod =SmtpDeliveryMethod.Network;
96:                 //如果服务器支持安全连接,则将安全连接设为true。
97:                 //gmail支持,163不支持,如果是gmail则一定要将其设为true
98:                 if(this.cobSmtp.Text =="smtp.163.com")
99:                     client.EnableSsl =false;
100:                 else
101:                     client.EnableSsl =true;
102:                 client.UseDefaultCredentials =false;
103:
104:                 //设置用户名和密码
105:                 stringusername =this.txtUser.Text.Trim();
106:                 stringpassword =this.txtPassword.Text.Trim();
107:                 System.Net.NetworkCredentialcredials =newSystem.Net.NetworkCredential(username, password);
108:
109:                 client.Credentials = credials;
110:
111:                 //发送邮件
112:                 client.Send(message);
113:
114:                 //MessageBox.Show("发送成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
115:                 //写入日志操作,提示哪封邮件已经发送成功
116:             }
117:             catch(Exceptionex)
118:             {
119:                 //MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
120:                 //写入日志操作,提示哪封邮件没有发送成功
121:             }
122:         }
123:         #endregion
124:
125:         #regionValidateData
126:         ///<summary>
127:         ///校验数据是否成功
128:         ///</summary>
129:         ///<returns>true则表示数据校验通过,false表示校验不通过</returns>
130:         publicboolValidateData()
131:         {
132:             this.txtUser_Validating(null,null);
133:             this.txtPassword_Validating(null,null);
134:             this.txtReceiveEmail_Validating(null,null);
135:             if(_password ==false|| _ReceiveEmail ==false|| _user ==false)
136:                 returnfalse;
137:             else
138:                 returntrue;
139:
140:         }
141:         #endregion
142:         #endregion
143:
144:         #regionEvent Handlers
145:         #regionLoad handler for frm_Main
146:         privatevoidfrm_Main_Load(objectsender,EventArgse)
147:         {
148:             //添加两个smtp服务器名称
149:             this.cobSmtp.Items.Add("smtp.163.com");
150:             this.cobSmtp.Items.Add("smtp.gmail.com");
151:             //设置为下拉列表
152:             this.cobSmtp.DropDownStyle =ComboBoxStyle.DropDownList;
153:             //默认选中第一个选项
154:             this.cobSmtp.SelectedIndex = 0;
155:             this.txtUser.Text ="用户名";
156:             this.txtSendUser.Text ="发件人姓名";
157:             this.txtPassword.Text ="密码";
158:             this.txtReceiveUser.Text ="收件人姓名";
159:             this.txtReceiveEmail.Text ="收件人Email";
160:         }
161:         #endregion
162:
163:         #regionClick handler for btnDel
164:         privatevoidbtnDel_Click(objectsender,EventArgse)
165:         {
166:             if(this.trvList.SelectedNode !=null)
167:             {
168:                 TreeNodetempNode =this.trvList.SelectedNode;
169:                 this.trvList.Nodes.Remove(tempNode);
170:             }
171:             else
172:             {
173:                 MessageBox.Show("请选择要删除的附件!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
174:             }
175:         }
176:         #endregion
177:
178:         #regionClick handler for btnAdd
179:         privatevoidbtnAdd_Click(objectsender,EventArgse)
180:         {
181:             OpenFileDialogopenfile =newOpenFileDialog();
182:             openfile.InitialDirectory =Application.StartupPath;
183:             openfile.FileName ="";
184:             openfile.RestoreDirectory =true;
185:             openfile.Multiselect =true;//支持文件多选
186:             //显示打开文件对话框,并判断是否单击了确定按钮
187:             if(openfile.ShowDialog() ==DialogResult.OK)
188:             {
189:                 //string fileName = openfile.FileName;
190:                 //this.trvList.Nodes.Add(fileName);
191:                 string[] fileNames = openfile.FileNames;
192:                 foreach(stringstrinfileNames)
193:                 {
194:                     this.trvList.Nodes.Add(str);
195:                 }
196:             }
197:         }
198:         #endregion
199:
200:         #regionClick handler for btnSend
201:         privatevoidbtnSend_Click(objectsender,EventArgse)
202:         {
203:             boolvalidatePass =this.ValidateData();
204:             if(validatePass ==false)return;
205:             string[] receives =this.txtReceiveEmail.Text.Trim().Split(newchar[] {';',','});
206:              //支持群发,输入格式为:abc@163.com;def@hotmail.com,ghi@qq.com,如果觉得群发比较慢,可以考虑使用多线程
207:             foreach(stringstrinreceives)
208:             {
209:                 this.SendEmail(str.Trim());
210:             }
211:             MessageBox.Show("发送完成!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
212:         }
213:         #endregion
214:
215:         #regionValidating handler for txtPassword
216:         voidtxtPassword_Validating(objectsender,CancelEventArgse)
217:         {
218:             if(this.txtPassword.Text ==string.Empty)
219:             {
220:                 this.errorProvider.SetError(this.txtPassword,"密码不能为空!");
221:                 _password =false;
222:             }
223:             else
224:             {
225:                 this.errorProvider.SetError(this.txtPassword,"");
226:                 _password =true;
227:             }
228:         }
229:         #endregion
230:
231:         #regionValidating handler for txtReceiveEmail
232:         voidtxtReceiveEmail_Validating(objectsender,CancelEventArgse)
233:         {
234:             System.Text.RegularExpressions.Regexrex =newSystem.Text.RegularExpressions.Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
235:             if(!rex.IsMatch(this.txtReceiveEmail.Text.Trim()))
236:             {
237:                 this.errorProvider.SetError(this.txtReceiveEmail,"邮箱地址格式不正确!");
238:                 _ReceiveEmail =false;
239:             }
240:             else
241:             {
242:                 this.errorProvider.SetError(this.txtReceiveEmail,"");
243:                 _ReceiveEmail =true;
244:             }
245:         }
246:         #endregion
247:
248:         #regionValidating handler for txtUser
249:         voidtxtUser_Validating(objectsender,CancelEventArgse)
250:         {
251:             if(this.txtUser.Text ==string.Empty)
252:             {
253:                 this.errorProvider.SetError(this.txtUser,"用户名不能为空!");
254:                 _user =false;
255:             }
256:             else
257:             {
258:                 this.errorProvider.SetError(this.txtUser,"");
259:                 _user =true;
260:             }
261:         }
262:
264:     }
265:  }

[/code]
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: