zoukankan      html  css  js  c++  java
  • 通过C#发送邮件,可以根据自己的需求更改。

    轉自https://www.cnblogs.com/StupidsCat/archive/2012/06/15/2550779.html

    通过C#发送自定义的html格式邮件
    通过C#发送邮件,可以根据自己的需求更改。

    这个是个配置文件的类,可以用,也可以改,也可以不用。

    复制代码
    using System;
    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;

    namespace WaterCubeCheck
    {
    [Serializable]
    public class dataStruct//配置结构
    {
    public string
    mingcheng1 = "服务器1",
    mingcheng2 = "服务器2",
    lianjie1 = "Data Source=localhost;Initial Catalog=test;User ID=sa;Password=123456",
    lianjie2 = "Data Source=localhost;Initial Catalog=test;User ID=sa;Password=123456",
    Toaddress = "test@163.com,test1@163.com",
    Fromaddress = "test@139.com",
    Fromaddressname = "测试",
    MailSub = "测试",
    FromMailPassword = "123456",
    SmtpServer = "smtp.139.com";
    public bool issendingEmail = false;
    public int starttime = 9;
    public int endtime = 19;
    public int sendtime = 60;
    public dataStruct()
    {
    mingcheng1 = "服务器1";
    mingcheng2 = "服务器2";
    lianjie1 = "Data Source=localhost;Initial Catalog=test;User ID=sa;Password=123456";
    lianjie2 = "Data Source=localhost;Initial Catalog=test;User ID=sa;Password=123456";
    Toaddress = "test@163.com";
    Fromaddress = "test1@163.com";
    Fromaddressname = "Server";
    MailSub = "测试";
    FromMailPassword = "123456";
    SmtpServer = "smtp.163.com";
    issendingEmail = false;
    starttime = 9;
    endtime = 19;
    sendtime = 60;
    }
    }

    [Serializable]
    public class MailBodyCon
    {
        public string
            machStr = "";
        public string
            pattenStr = "";
        public int count = 0;
        public MailBodyCon()
        {
            machStr = "";
            pattenStr = "";
            count = 0;
        }
    }
    
    
    
    public static class appConfig
    {
        public static dataStruct conf = new dataStruct();
    
        public static MailBodyCon body = new MailBodyCon();
    
        /// <summary>
        /// 保存到配置文件
        /// </summary>
        /// <returns>返回是否成功</returns>
        public static bool savetofile()
        {
            try
            {
                string path = AppDomain.CurrentDomain.BaseDirectory;
                Stream fs = new FileStream(path + "app.cfg", FileMode.OpenOrCreate);
    
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(fs, conf);
    
                fs.Close();
            }
            catch
            {
            }
            return true;
        }
    
        /// <summary>
        /// 读取配置文件
        /// </summary>
        /// <returns>返回是否成功</returns>
        public static bool readfromfile()
        {
            try
            {
                string path = AppDomain.CurrentDomain.BaseDirectory;
                Stream fs = new FileStream(path + "app.cfg", FileMode.OpenOrCreate);
                BinaryFormatter formatter = new BinaryFormatter();
                conf = (dataStruct)formatter.Deserialize(fs);
    
                fs.Close();
            }
            catch
            {
    
            }
            return true;
        }
    }
    

    }
    复制代码

    这个是邮件内容的拼接以及发送类。

    复制代码
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net.Mail;
    using System.Windows.Forms;
    using System.Data;
    using System.IO;

    namespace WaterCubeCheck
    {
    public class MailClass
    {
    ///


    /// 发送邮件
    ///

    /// 邮件内容
    public void SendStrMail(string data)
    {
    try
    {
    System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
    if (appConfig.conf.Toaddress.IndexOf(',') > -1)
    {
    string[] mails = appConfig.conf.Toaddress.Split(',');//多个收信地址用逗号隔开
    for (int counti = 0; counti < mails.Length; counti++)
    {
    if (mails[counti].Trim() != "")
    {
    msg.To.Add(mails[counti]);
    }
    }
    }
    else
    {
    msg.To.Add(appConfig.conf.Toaddress);//添加单一收信地址
    }
    msg.To.Add(appConfig.conf.Fromaddress);

                msg.From = new System.Net.Mail.MailAddress(appConfig.conf.Fromaddress, appConfig.conf.Fromaddressname, System.Text.Encoding.UTF8);
                /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
                string sub = appConfig.conf.MailSub;//邮件标题 
                if (appConfig.body.count == 0)
                {
                    msg.Subject = appConfig.conf.MailSub;
                }
                else
                {
                    msg.Subject = data;
                }
                msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
                //long tol = GateCount + HandCount;
                msg.Body = data;
                msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码 
                msg.IsBodyHtml = true;//是否是HTML邮件 
                msg.Priority = MailPriority.High;
    
                SmtpClient client = new SmtpClient();
                client.Credentials = new System.Net.NetworkCredential(appConfig.conf.Fromaddress, appConfig.conf.FromMailPassword);
                //在zj.com注册的邮箱和密码 
                client.Host = appConfig.conf.SmtpServer;//邮件发送服务器,上面对应的是该服务器上的发信帐号和密码
    
                object userState = msg;
                try
                {
                    client.SendAsync(msg, userState);//开始发送
                }
                catch (System.Net.Mail.SmtpException ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString());
            }
        }
    }
    //发送带表格邮件
    public class SendMail
    {
        public static MailClass Mail=new MailClass();
        public static string LargeMailBody="";//初始化多表格邮件内容
        //单一表格邮件内容
        public static void SendMsg(DataTable data)
        {
            string MailBody = "<p style="font-size: 10pt">以下内容为系统自动发送,请勿直接回复,谢谢。</p><table cellspacing="1" cellpadding="3" border="0" bgcolor="000000" style="font-size: 10pt;line-height: 15px;">";
            MailBody += "<div align="center">";
            MailBody += "<tr>";
            for (int hcol = 0; hcol < data.Columns.Count; hcol++)
            {
                MailBody += "<td bgcolor="999999">&nbsp;&nbsp;&nbsp;";
                MailBody += data.Columns[hcol].ColumnName;
                MailBody += "&nbsp;&nbsp;&nbsp;</td>";
            }
            MailBody += "</tr>";
            
            for (int row = 0; row < data.Rows.Count; row++)
            {
                MailBody += "<tr>";
                for (int col = 0; col < data.Columns.Count; col++)
                {
                    MailBody += "<td bgcolor="dddddd">&nbsp;&nbsp;&nbsp;";
                    MailBody += data.Rows[row][col].ToString();
                    MailBody += "&nbsp;&nbsp;&nbsp;</td>";
                }
                MailBody += "</tr>";
            }
            MailBody += "</table>";
            MailBody += "</div>";
            Mail.SendStrMail(MailBody);
        }
        //单一表格邮件内容
        public static void SendMsg(DataGridView data)
        {
            string MailBody = "<p style="font-size: 10pt">以下内容为系统自动发送,请勿直接回复,谢谢。</p><table cellspacing="1" cellpadding="3" border="0" bgcolor="000000" style="font-size: 10pt;line-height: 15px;">";
    
            MailBody += "<div align="center">";
            MailBody += "<tr>";
            for (int hcol = 0; hcol < data.Columns.Count; hcol++)
            {
                MailBody += "<td bgcolor="999999">&nbsp;&nbsp;&nbsp;";
                MailBody += data.Columns[hcol].HeaderText.ToString();
                MailBody += "&nbsp;&nbsp;&nbsp;</td>";
            }
            MailBody += "</tr>";
    
            for (int row = 0; row < data.Rows.Count; row++)
            {
                MailBody += "<tr>";
                for (int col = 0; col < data.Columns.Count; col++)
                {
                    MailBody += "<td bgcolor="dddddd">&nbsp;&nbsp;&nbsp;";
                    MailBody += data.Rows[row].Cells[col].Value.ToString();
                    MailBody += "&nbsp;&nbsp;&nbsp;</td>";
                }
                MailBody += "</tr>";
            }
            MailBody += "</table>";
            MailBody += "</div>";
            Mail.SendStrMail(MailBody);
        }
        //多表格邮件内容
        public static void SendLargeMsg(DataTable data,string title="")
        {
            if (title != "")
                LargeMailBody += "<p style="font-size: 10pt">"+title+"</p>";
    
            LargeMailBody += "<div align="center">";
            LargeMailBody += "<table cellspacing="1" cellpadding="3" border="0" bgcolor="000000" style="font-size: 10pt;line-height: 15px;">";
    
            LargeMailBody += "<tr>";
            for (int hcol = 0; hcol < data.Columns.Count; hcol++)
            {
                LargeMailBody += "<td bgcolor="999999">&nbsp;&nbsp;&nbsp;";
                LargeMailBody += data.Columns[hcol].ColumnName;
                LargeMailBody += "&nbsp;&nbsp;&nbsp;</td>";
            }
            LargeMailBody += "</tr>";
    
            for (int row = 0; row < data.Rows.Count; row++)
            {
                LargeMailBody += "<tr>";
                for (int col = 0; col < data.Columns.Count; col++)
                {
                    LargeMailBody += "<td bgcolor="dddddd">&nbsp;&nbsp;&nbsp;";
                    LargeMailBody += data.Rows[row][col].ToString();
                    LargeMailBody += "&nbsp;&nbsp;&nbsp;</td>";
                }
                LargeMailBody += "</tr>";
            }
            LargeMailBody += "</table><br>";
            LargeMailBody += "</div>";
        }
        //多表格邮件内容
        public static void SendLargeMsg(DataGridView data, string title = "")
        {
            if (title != "")
                LargeMailBody += "<p style="font-size: 10pt">" + title + "</p>";
    
            LargeMailBody += "<div align="center">";
    
            LargeMailBody += "<table cellspacing="1" cellpadding="3" border="0" bgcolor="000000" style="font-size: 10pt;line-height: 15px;">";
    
            LargeMailBody += "<tr>";
            for (int hcol = 0; hcol < data.Columns.Count; hcol++)
            {
                LargeMailBody += "<td bgcolor="999999">&nbsp;&nbsp;&nbsp;";
                LargeMailBody += data.Columns[hcol].HeaderText.ToString();
                LargeMailBody += "&nbsp;&nbsp;&nbsp;</td>";
            }
            LargeMailBody += "</tr>";
    
            for (int row = 0; row < data.Rows.Count; row++)
            {
                LargeMailBody += "<tr>";
                for (int col = 0; col < data.Columns.Count; col++)
                {
                    LargeMailBody += "<td bgcolor="dddddd">&nbsp;&nbsp;&nbsp;";
                    LargeMailBody += data.Rows[row].Cells[col].Value.ToString();
                    LargeMailBody += "&nbsp;&nbsp;&nbsp;</td>";
                }
                LargeMailBody += "</tr>";
            }
            LargeMailBody += "</table><br>";
            LargeMailBody += "</div>";
        }
    }
    

    }
    复制代码
    调用的时候用这个方法

    复制代码
    private void button1_Click(object sender, EventArgs e)
    {
    t1 = databind(qishishijian.Value, jieshushijian.Value);
    t2 = databind1(qishishijian.Value, jieshushijian.Value);
    SendMail.LargeMailBody = "";
    try
    {
    SendMail.SendLargeMsg(t1, "测试内容1);
    SendMail.SendLargeMsg(t2, "测试内容2");
    SendMail.Mail.SendStrMail("<p style="font-size: 10pt">以下内容为系统自动发送,请勿直接回复,谢谢。

    " + SendMail.LargeMailBody);
    }
    catch { MessageBox.Show("没有可以发送的内容!"); }
    }
    复制代码
    我在工作中经常用,大家可以改成自己的。

  • 相关阅读:
    站立会议第二天
    站立会议第一天
    视频链接
    软件需求规格说明书模板(spec)
    个人NABCD
    团队项目及成员介绍
    会议视频
    软件需求规格说明书模板(Spec)
    团队计划backlog
    团队项目成员和题目
  • 原文地址:https://www.cnblogs.com/ellafive/p/13033232.html
Copyright © 2011-2022 走看看