首页 > 学院 > 开发设计 > 正文

C#实现对邮件的发送

2019-11-17 03:12:40
字体:
来源:转载
供稿:网友

C#实现对邮件的发送

首先是邮件帮助类

using System;  using System.Collections.Generic;  using System.Text;  using System.Net.Mail;  using System.Windows.Forms;    namespace zzEmail  {      //邮件帮助类      class MailHelper      {          SmtpClient smtpClient;          //邮件实体类,包含用户名密码          MailModel mail;          UserModel to;          public MailHelper()          {           }          public MailHelper(MailModel mail, UserModel t)          {              smtpClient = new SmtpClient();              this.mail = mail;              this.to = t;          }          public void send()          {              MailMessage msg=null;              smtpClient.Credentials = new System.Net.NetworkCredential(mail.from.Send_Address.Address, mail.from.passWord);//设置发件人身份的票据                smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;              smtpClient.Host = "smtp." + mail.from.Send_Address.Host;              try              {                  msg = mail.GetMail();                  msg.To.Add(to.Send_Address.Address);                  smtpClient.Send(msg);                  MessageBox.Show("发送成功");              }              catch (SmtpException err)              {                  //如果错误原因是没有找到服务器,则尝试不加smtp.前缀的服务器                  if (err.StatusCode == SmtpStatusCode.GeneralFailure)                  {                      try                      {                          //有些邮件服务器不加smtp.前缀                          smtpClient.Host = null;                          smtpClient.Send(mail.GetMail());                      }                      catch (SmtpException err1)                      {                          MessageBox.Show(err1.Message, "发送失败");                      }                  }                  else                  {                      MessageBox.Show(err.Message, "发送失败");                  }              }              finally              {                  //及时释放占用的资源                  msg.Dispose();              }          }      }  }  

邮件实体类

using System;  using System.Collections.Generic;  using System.Text;  using System.Net.Mail;    namespace zzEmail  {      //邮件实体类      class MailModel      {          //主题          public string Subject { get;set;}          public string SubjectEncoding { get; set; }          //内容          public string Body { get;set;}          public string BodyEncoding { get; set; }          //附件          public List<Attachment> Attachments=new List<Attachment>();          public MailMessage message;          //发送人          public UserModel from;            public MailModel(string subject,string body,UserModel f)          {              message = new MailMessage();              this.Subject = subject;              this.Body = body;              this.from = f;          }          //添加附件          public void AddAttach(Attachment file)          {              Attachments.Add(file);          }          //添加一群附件          public void AddAttach(List<Attachment> files)          {              foreach (Attachment item in files)              {                  if(item!=null)                      this.Attachments.Add(item);              }          }          //返回邮件实体          public MailMessage GetMail()          {              if (this.message != null)              {                  message.Subject = this.Subject;                  message.SubjectEncoding = System.Text.Encoding.UTF8;                  message.Body = this.Body;                  message.BodyEncoding = System.Text.Encoding.UTF8;                  message.From = from.Send_Address;//设置发邮件人地址                  foreach (Attachment item in Attachments)                  {                      if (item != null)                          this.message.Attachments.Add(item);                  }                  return message;              }              else                  return null;          }      }  }  

邮件的用户类

using System;  using System.Collections.Generic;  using System.Text;  using System.Net.Mail;    namespace zzEmail  {      //接收邮件的用户实体类      class UserModel      {          public string nickname { get; set; }          public string password { get; set; }          public MailAddress Send_Address{get;set;}          public UserModel(string useraddr)          {              Send_Address = new MailAddress(useraddr);          }          public UserModel(string useraddr,string nickname)          {              this.nickname = nickname;              Send_Address = new MailAddress(useraddr);          }      }  }  

使用多线程来对邮件进行发送

using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Data;  using System.Drawing;  using System.Text;  using System.Windows.Forms;  using System.Net.Mail;  using System.Threading;    namespace zzEmail  {      public partial class Form1 : Form      {          public Form1()          {              InitializeComponent();          }            PRivate void btn_addFile_Click(object sender, EventArgs e)          {              OpenFileDialog myOpenFileDialog = new OpenFileDialog();              myOpenFileDialog.CheckFileExists = true;              //只接收有效的文件名              myOpenFileDialog.ValidateNames = true;              //允许一次选择多个文件作为附件              myOpenFileDialog.Multiselect = true;              myOpenFileDialog.ShowDialog();              if (myOpenFileDialog.FileNames.Length > 0)              {                  FileList.Items.AddRange(myOpenFileDialog.FileNames);              }          }            private void btn_Send_Click(object sender, EventArgs e)          {              UserModel from = new UserModel(txt_UserName.Text);              from.password = txt_Pass.Text;                UserModel to = new UserModel(txt_rec.Text);                MailModel mail = new MailModel(txt_sub.Text, txt_content.Text, from);                List<Attachment> filelist = new List<Attachment>();              //添加附件              if (FileList.Items.Count > 0)              {                  for (int i = 0; i < FileList.Items.Count; i++)                  {                      Attachment attachFile = new Attachment(FileList.Items[i].ToString());                      filelist.Add(attachFile);                  }              }                mail.AddAttach(filelist);//添加附件              MailHelper helper = new MailHelper(mail, to);              //启动一个线程发送邮件              Thread mythread = new Thread(new ThreadStart(helper.send));              mythread.Start();          }      }  }  

以上代码源于收集,需要时可以借鉴。。。。。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表