zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    }
    


     

  • 相关阅读:
    mysql外键(FOREIGNKEY)使用介绍
    MYSQL数据库-约束
    mysql探究之null与not null
    爬虫
    http://blog.csdn.net/w_e_i_/article/details/70766035
    Python 3.5安装 pymysql 模块
    Python 3.5 连接Mysql数据库(pymysql 方式)
    hdu Bone Collector
    hdu City Game
    hdu Largest Rectangle in a Histogram
  • 原文地址:https://www.cnblogs.com/zhujunxxxxx/p/3348801.html
Copyright © 2011-2022 走看看