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

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

  • 相关阅读:
    Tomcat 管理页面 403 Access Denied 解决方法
    解决 Flowable 部署在服务器上后 重定向为 localhost 问题
    删除数据库下的所有表结构
    Errcode: 13 "Permission denied"
    mysql-bin.index not found
    JPA 使用@Where 注解实现全局过滤
    Linux 安装 telnet
    JavaScript基础巩固系列——面向对象编程(构造函数、new、对象继承、对象拷贝、严格模式)
    Javascript基础巩固系列——标准库JSON对象
    Javascript基础巩固系列——标准库Math对象+Date对象
  • 原文地址:https://www.cnblogs.com/HuiTai/p/HuiTai_C01.html
Copyright © 2011-2022 走看看