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();
            }
        }
    }
    


     

  • 相关阅读:
    ASP.NET编程的十大技巧
    C#学习心得(转)
    POJ 1177 Picture (线段树)
    POJ 3067 Japan (树状数组)
    POJ 2828 Buy Tickets (线段树)
    POJ 1195 Mobile phones (二维树状数组)
    HDU 4235 Flowers (线段树)
    POJ 2886 Who Gets the Most Candies? (线段树)
    POJ 2418 Cows (树状数组)
    HDU 4339 Query (线段树)
  • 原文地址:https://www.cnblogs.com/zhujunxxxxx/p/3348801.html
Copyright © 2011-2022 走看看