读书人

C#net发送邮件

发布时间: 2012-08-10 12:19:33 作者: rapoo

C#.net发送邮件

using System;using System.Collections.Generic;using System.Text;using System.Net.Mail;using System.Net;using System.Data;using System.ComponentModel;namespace ITTS_Express.Contact{    public class MailHelper    {        //private static log4net.ILog log = log4net.LogManager.GetLogger(typeof(MailHelper));        /// <summary>        /// 送件        /// </summary>        /// <param name="strFrom">收件人Email Address</param>        /// <param name="lstTo">件人Email Address列表</param>        /// <param name="strSubject">件</param>        /// <param name="strBody">件内容</param>        /// <param name="isBodyHtml">是否是HTML格式</param>        /// <param name="strSmtpServer">SMTP 件服器</param>        /// <param name="lstAttachment_FullPath">附件路列表</param>        /// <returns>是否送成功</returns>        public static bool SendMail(string strFrom, List<string> lstTo, List<string> listCC, string strSubject,            string strBody, bool isBodyHtml, string strSmtpServer,            List<string> lstAttachment_FullPath, bool isAsync)        {            return SendMail(strFrom, lstTo, listCC, strSubject, strBody, isBodyHtml, strSmtpServer, null, null, lstAttachment_FullPath, isAsync);        }        /// <summary>        /// 送件        /// </summary>        /// <param name="strFrom">收件人Email Address</param>        /// <param name="lstTo">件人Email Address列表</param>        /// <param name="lstCC">抄送者Email地址</param>        /// <param name="strSubject">件</param>        /// <param name="strBody">件内容</param>        /// <param name="isBodyHtml">是否是HTML格式</param>        /// <param name="strSmtpServer">SMTP 件服器</param>        /// <param name="strUserName">用名</param>        /// <param name="strPwd">密</param>        /// <param name="lstAttachment_FullPath">附件路列表</param>        /// <returns>是否送成功</returns>        public static bool SendMail(string strFrom, List<string> lstTo, List<string> lstCC, string strSubject,            string strBody, bool isBodyHtml, string strSmtpServer,            string strUserName, string strPwd, List<string> lstAttachment_FullPath, bool isAsync)        {            #region ==== 创建电子邮件 ====            MailMessage myMail = new MailMessage();            //发件人            myMail.From = new MailAddress(strFrom);            //收件人            foreach (string item in lstTo)                myMail.To.Add(item);            if (lstCC != null && lstCC.Count > 0)            {                foreach (string item in lstCC)                    myMail.CC.Add(item);            }            //主题            myMail.Subject = strSubject;            //内容            myMail.Body = strBody;            //正文编码            myMail.BodyEncoding = System.Text.Encoding.UTF8;            //设置为HTML格式            myMail.IsBodyHtml = isBodyHtml;            //优先级            myMail.Priority = MailPriority.Normal;            //发送附件            if (lstAttachment_FullPath != null && lstAttachment_FullPath.Count > 0)            {                foreach (string attachment_FullPath in lstAttachment_FullPath)                    myMail.Attachments.Add(new Attachment(attachment_FullPath));            }            #endregion            #region ==== 配置支持Stmp协议的客户端 ====            SmtpClient smtpClient = new SmtpClient();            //发送方式            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;            //smtp服务器            smtpClient.Host = strSmtpServer; //"smtp.sina.com", your smtp server here10.128.1.1                      ////用户名凭证                  if (!string.IsNullOrEmpty(strUserName) && !string.IsNullOrEmpty(strPwd))                smtpClient.Credentials = new System.Net.NetworkCredential(strUserName, strPwd);            #endregion            bool isSuccess = true;            try            {                //发送邮件                if (isAsync)                {                    smtpClient.SendCompleted += new SendCompletedEventHandler(SendMailCompleted);                    smtpClient.SendAsync(myMail, myMail);                }                else                    smtpClient.Send(myMail);            }            catch (Exception e)            {                isSuccess = false;                //log.Error(e.Message);            }            return isSuccess;        }        static void SendMailCompleted(object sender, AsyncCompletedEventArgs e)        {            MailMessage mailMsg = (MailMessage)e.UserState;            string subject = mailMsg.Subject as string;            if (e.Cancelled) // 邮件被取消            {                Console.WriteLine(MailAddressToString(mailMsg) + subject + " 被取消。");                Console.WriteLine(" 被取消。");                //log.Info(MailAddressToString(mailMsg) + subject + "被取消。");            }            if (e.Error != null)            {                Console.WriteLine("错误:" + e.Error.ToString());                //log.Warn("错误:" + e.Error.ToString());            }            else            {                Console.WriteLine(MailAddressToString(mailMsg) + "发送完成。");                //log.Info(MailAddressToString(mailMsg) + "发送完成。");            }        }        private static string MailAddressToString(MailMessage mailMsg)        {            StringBuilder sb = new StringBuilder();            foreach (MailAddress addr in mailMsg.To)            {                sb.Append(addr.Address + " ");            }            return sb.ToString();        }            }}

备注:抄送者通常为企业主管的Email

第一个方法为邮件服务器不用校验用户名密码的,现在很少使用

通常调用第二个方法来发送邮件

你的邮箱需要开通企业邮箱服务功能,才能发送邮件,不同的邮件提供商的企业邮箱发送频率是有限制的!

读书人网 >C#

热点推荐