取消操作

C#发送邮件

以下代码已用 .yeah 、qq 以及本人公司邮箱测试通过,可多发,可挂附件

本次测试邮件发送类,是用的winform

页面如下

窗口的后台代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Threading.Tasks;
 9 using System.Windows.Forms;
10 
11 namespace MailServer
12 {
13     public partial class MailSend : Form
14     {
15         public MailSend()
16         {
17             InitializeComponent();
18         }
19 
20         /// <summary>
21         /// 发送按钮  的点击事件
22         /// </summary>
23         /// <param name="sender"></param>
24         /// <param name="e"></param>
25         private void btnSend_Click(object sender, EventArgs e)
26         {
27             string name = txtName.Text.Trim();          //输入邮件地址(发件人的)
28             string pwd = txtPwd.Text.Trim();            //输入的邮箱密码(发件人的)
29             string content = txtContent.Text.Trim();    //邮件内容
30             string recieve = txtRecieve.Text.Trim();    //收件人邮件地址
31             string title = txtTitle.Text.Trim();        //邮件标题
32             string attachFile = txtFileName.Text;       //附件的路径
33             try
34             {
35                 //调用接口,发送邮件
36                 EMailUtil.SendMail(name, pwd, title, content, recieve, attachFile);
37                 MessageBox.Show("发送成功");
38             }
39             catch (Exception)
40             {
41                 MessageBox.Show("发送失败");
42             }
43             
44         }
45 
46         /// <summary>
47         /// 浏览 按钮的点击事件
48         /// </summary>
49         /// <param name="sender"></param>
50         /// <param name="e"></param>
51         private void button1_Click(object sender, EventArgs e)
52         {
53             
54             DialogResult result = OFD.ShowDialog(); //打开文件浏览窗口
55             if (result == DialogResult.OK)
56             txtFileName.Text = OFD.FileName;        //将附件路径保存到文本框
57         }
58     }
59 }
View Code

接口代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Net.Mail;
 6 
 7 namespace MailServer
 8 {
 9     public class EMailUtil
10     {
11 
12         /// <summary>
13         /// 邮件发送
14         /// </summary>
15         /// <param name="userName">发件人邮箱地址</param>
16         /// <param name="pwd">发件人邮箱密码</param>
17         /// <param name="mailSubject">邮件主题</param>
18         /// <param name="mailBody">邮件内容</param>
19         /// <param name="sendMailAddress">收件人地址(以";"分隔)</param>
20         /// <param name="attachment">附件</param>
21         public static void SendMail(string userName, string pwd, string mailSubject, string mailBody, string sendMailAddress, string attachment)
22         {
23             MailMessage m = new MailMessage();
24             string[] arrTo = sendMailAddress.Split(';');                        //将以分号分隔的收件人地址拆开         
25             foreach (string t in arrTo)
26             {
27                 if (!string.IsNullOrEmpty(t))
28                     m.To.Add(new MailAddress(t));                               //添加收件人
29             }
30             m.From = new MailAddress(userName);                                 //发件人
31             m.Subject = mailSubject;                                            //邮件标题
32             m.Body = mailBody;                                                  //邮件内容
33             m.IsBodyHtml = true;
34 
35             m.SubjectEncoding = Encoding.GetEncoding("GB2312");
36             m.BodyEncoding = Encoding.GetEncoding("GB2312");
37             if (attachment.Length > 0)
38             {
39                 m.Attachments.Add(new Attachment(attachment));                  //添加附件
40             }
41             SmtpClient sm = new SmtpClient();
42             sm.Credentials = new System.Net.NetworkCredential(userName, pwd);
43             sm.DeliveryMethod = SmtpDeliveryMethod.Network;
44             sm.Host = "smtp.yeah.net";                                          //此处是邮件的服务器主机名,如果用163邮箱发送,就写smtp.163.com;126邮箱则写smtp.126.com
45             sm.Send(m);
46         }
47     }
48 }
View Code

 

此方法可以正常的发送邮件,

但是有一个尚未解决的问题。就是接口中,最后调用的Send方法没有返回值,这样不容易判断邮件的发送状态。

望大神们有知道的给个方案~在此多谢~

posted on 2013-12-10 14:54  取消操作  阅读(332)  评论(0编辑  收藏  举报

导航