zoukankan      html  css  js  c++  java
  • C#简单邮件发送

    写了一个通用方法,支持公司内部邮件服务器和使用SMTP服务商的邮件服务器。

    Common.cs

    View Code
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    using System.Net.Mail;  //引入Mail命名空間
    
    namespace WebMailTest
    {
        /// <summary>
        /// C#郵件發送
        /// Author:www.cnblogs.com/hangwei
        /// </summary>
        public class Common
        {
            /// <summary>
            /// 發送郵件的方法
            /// </summary>
            /// <param name="inCompany">郵件服務器是否在公司內部</param>
            /// <param name="account">郵件帳號,若為公司內部服務器,可不填</param>
            /// <param name="pwd">郵件密碼,若為公司內部服務器,可不填</param>
            /// <param name="host">主機地址(SMTP地址)</param>
            /// <param name="port">端口</param>
            /// <param name="address">發件人地址</param>
            /// <param name="displayname">發件人顯示名稱</param>
            /// <param name="subject">郵件主旨</param>
            /// <param name="filepath">附件</param>
            /// <param name="toEmail">收件人</param>
            /// <param name="ccEmail">副本收件人</param>
            /// <param name="bccEmail">秘密副本收件人</param>
            /// <param name="body">郵件內容(HTML格式)</param>
            /// <returns>異常信息反饋,沒有則返回空值</returns>
            public static string SendMail(bool inCompany, string account, string pwd, string host, int port, string address, string displayname, string subject, string filepath, string toEmail, string ccEmail, string bccEmail, string body)
            {
                string errMsg = "";//錯誤返回信息
    
                //設置SmtpClient對象信息
                SmtpClient sClient = new SmtpClient(host, port);//創建SmtpClient對象
                if (inCompany == true)
                    sClient.UseDefaultCredentials = true;//使用默認驗證
                else
                    sClient.Credentials = new System.Net.NetworkCredential(account, pwd);//使用郵箱帳號和密碼進行驗證
    
                sClient.DeliveryMethod = SmtpDeliveryMethod.Network;//電子郵件是透過網絡傳送到SMTP伺服器
    
                MailMessage mmsg = new MailMessage();
                mmsg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
                mmsg.From = new MailAddress(address, displayname);//指定發件人的郵件地址和顯示名稱
                mmsg.Priority = MailPriority.High;//郵件的優先級
    
                //郵件內容部分
                mmsg.SubjectEncoding = Encoding.UTF8;//郵件主旨編碼
                mmsg.Subject = subject;//郵件主旨
    
                if (filepath != "")//如果文件路徑不為空,則添加附件信息
                    mmsg.Attachments.Add(new Attachment(filepath));
    
                //收件人信息
                //對郵件地址進行處理    
                if (toEmail.Contains(";"))//如果郵件地址包含分號
                {
                    string[] toAdrs = toEmail.Split(";".ToCharArray());
                    foreach (string toAdr in toAdrs)
                    {
                        mmsg.To.Add(toAdr);
                    }
                }
                else
                    mmsg.To.Add(toEmail);
                //副本收件人信息
                if (ccEmail != "")
                {
                    if (ccEmail.Contains(";"))
                    {
                        string[] ccAdrs = ccEmail.Split(";".ToCharArray());
                        foreach (string ccAdr in ccAdrs)
                        {
                            mmsg.CC.Add(ccAdr);
                        }
                    }
                    else
                        mmsg.CC.Add(ccEmail);
                }
    
                //秘密副本收件人信息
                if (bccEmail != "")
                {
                    if (bccEmail.Contains(";"))
                    {
                        string[] bccAdrs = bccEmail.Split(";".ToCharArray());
                        foreach (string bccAdr in bccAdrs)
                        {
                            mmsg.Bcc.Add(bccAdr);
                        }
                    }
                    else
                        mmsg.Bcc.Add(bccEmail);
                }
    
                //郵件內容
                mmsg.IsBodyHtml = true;  //支持HTML格式
                mmsg.BodyEncoding = Encoding.UTF8;//UTF8編碼
                mmsg.Body = body;  //郵件內容
    
                try
                {
                    sClient.Send(mmsg);
                }
                catch (Exception ex)
                {
                    errMsg = ex.Message + " | " + ex.InnerException;
                }
                return errMsg;
            }
        }
    }

    调用

    View Code
            //使用公司內部服務器
            protected void Button1_Click(object sender, EventArgs e)
            {
                string sError = Common.SendMail(true, "", "", "10.9.1.1", 25, "your company email host address", "XX部xx組", "功能測試", "", "123@sina.com", "", "", "Welcome!");
                if (sError == "")
                    ClientScript.RegisterStartupScript(this.GetType(), "tips1", "alert('發送成功!');", true);
            }
    
            //使用網易126郵件服務器
            protected void Button2_Click(object sender, EventArgs e)
            {
                string sError = Common.SendMail(false, "xxx@126.com", "your password", "smtp.126.com", 25, "xxx@126.com", "xxx的網易郵箱", "網易郵件主旨", "", "abc@163.com;bcd@qq.com", "", "", "網易歡迎你!");
                if (sError == "")
                    ClientScript.RegisterStartupScript(this.GetType(), "tips2", "alert('發送成功!');", true);
            }

    功能比较简单,介绍了.NET  System.Net.Mail  最基本的使用。
    程序功能已在本机通过测试。


    作者:hangwei
    出处:http://www.cnblogs.com/hangwei/
    关于作者:专注于微软平台项目的架构设计与开发、数据库调优等工作。如有问题或建议,请多多赐教!
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
    如果您觉得文章对您有帮助,可以点击文章右下角“推荐”一下。您的鼓励是作者坚持原创和持续写作的最大动力!

  • 相关阅读:
    2.1求二进制数中1的个数
    SQL学习笔记八:SQL Server陷阱
    SQL学习笔记之三:系统表syscommnets
    SQL学习笔记之二:QUOTENAME函数
    SQL学习笔记五:脚本创建角色、用户以及相关操作
    输入表名生成插入、更新存储过程和调用该存储过程的字符串
    没有注意过的count(0),count(1),count(*),count(列名)
    清除开始文档批处理
    SQL学习笔记七:利用脚本附加数据库
    SQL学习笔记六:关于全备/差异/日志备份的恢复
  • 原文地址:https://www.cnblogs.com/hangwei/p/2567268.html
Copyright © 2011-2022 走看看