c# 發送Email的2中方式

先來第一種html

  1 // 版權全部 ZhuoYue Co.,Ltd 卓越一通祕密信息
  2 // 文件名稱:MyEmailByCDO.cs
  3 // 做  者:huangzh
  4 // 建立日期:2015-08-20 16:18:27
  5 // 功能描述:發送郵件MyEmailByCDO
  6 // 任務編號:
  7 using System;
  8 using System.Collections.Generic;
  9 using System.Linq;
 10 using System.Text;
 11 
 12 namespace ZhuoYueE.Bpc.Core.Email
 13 {
 14 
 15     /// <summary>
 16     /// 功能描述:發送郵件MyEmailByCDO
 17     /// 做  者:huangzh
 18     /// 建立日期:2015-08-20 16:18:24
 19     /// 任務編號:
 20     /// </summary>
 21     public class MyEmailByCDO
 22     {
 23         ///<summary>
 24         /// 構造函數
 25         ///</summary>
 26         ///<param name="strserver">發件箱的郵件服務器地址</param>
 27         ///<param name="strtoMail">收件人地址(能夠是多個收件人,程序中是以「;"進行區分的)</param>
 28         ///<param name="strfromMail">發件人地址</param>
 29         ///<param name="strsubject">郵件標題</param>
 30         ///<param name="stremailBody">郵件內容(能夠以html格式進行設計)</param>
 31         ///<param name="strpassword">發件人郵箱密碼</param>
 32         ///<param name="intport">發送郵件所用的端口號(htmp協議默認爲25)</param>
 33         ///<param name="blnsslEnable">true表示對郵件內容進行socket層加密傳輸,false表示不加密</param>
 34         ///<param name="strCC">抄送人</param>
 35         public static void SendMyEmailByCDO(string strserver,
 36             string strtoMail,
 37             string strfromMail,
 38             string strsubject,
 39             string stremailBody,
 40             string strpassword,
 41             int intport,
 42             bool blnsslEnable,
 43             string strCC)
 44         {
 45             SendMyEmailByCDO(strserver,
 46              strtoMail,
 47              strfromMail,
 48              strsubject,
 49              stremailBody,
 50              strpassword,
 51              intport,
 52              blnsslEnable,
 53              strCC,
 54              null);
 55         }
 56 
 57         ///<summary>
 58         /// 構造函數
 59         ///</summary>
 60         ///<param name="strserver">發件箱的郵件服務器地址</param>
 61         ///<param name="strtoMail">收件人地址(能夠是多個收件人,程序中是以「;"進行區分的)</param>
 62         ///<param name="strfromMail">發件人地址</param>
 63         ///<param name="strsubject">郵件標題</param>
 64         ///<param name="stremailBody">郵件內容(能夠以html格式進行設計)</param>
 65         ///<param name="strpassword">發件人郵箱密碼</param>
 66         ///<param name="intport">發送郵件所用的端口號(htmp協議默認爲25)</param>
 67         ///<param name="blnsslEnable">true表示對郵件內容進行socket層加密傳輸,false表示不加密</param>
 68         /// <param name="strCC">抄送人</param>
 69         /// <param name="files">附件</param>
 70         public static void SendMyEmailByCDO(
 71             string strserver,
 72             string strtoMail,
 73             string strfromMail,
 74             string strsubject,
 75             string stremailBody,
 76             string strpassword,
 77             int intport,
 78             bool blnsslEnable,
 79             string strCC,
 80             List<string> files)
 81         {
 82             string stryourEmail = strfromMail;
 83             CDO.Message message = new CDO.Message();
 84             CDO.IConfiguration configuration = message.Configuration;
 85             ADODB.Fields fields = configuration.Fields;
 86 
 87             Console.WriteLine(String.Format("Configuring CDO settings..."));
 88 
 89             ADODB.Field field = fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"];
 90             field.Value = strserver;
 91 
 92             field = fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"];
 93             field.Value = intport;
 94 
 95 
 96             field = fields["http://schemas.microsoft.com/cdo/configuration/sendusing"];
 97             field.Value = CDO.CdoSendUsing.cdoSendUsingPort;
 98 
 99             field = fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"];
100             field.Value = CDO.CdoProtocolsAuthentication.cdoBasic;
101 
102             field = fields["http://schemas.microsoft.com/cdo/configuration/sendusername"];
103             field.Value = stryourEmail;
104 
105             field = fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"];
106             field.Value = strpassword;
107 
108             field = fields["http://schemas.microsoft.com/cdo/configuration/smtpusessl"];
109             field.Value = blnsslEnable.ToString().ToLower();
110 
111             fields.Update();
112 
113             Console.WriteLine(String.Format("Building CDO Message..."));
114 
115             message.From = stryourEmail;
116             message.To = strtoMail;
117             message.Subject = strsubject;
118             message.BodyPart.Charset = "utf-8";
119 
120 
121             if (!string.IsNullOrEmpty(strCC))
122             {
123                 message.CC = strCC;
124             }
125 
126             message.HTMLBody = stremailBody;
127             if (files != null)
128             {
129                 foreach (string stritem in files)
130                 {
131                     message.AddAttachment(stritem);
132                 }
133             }
134 
135             Console.WriteLine(String.Format("Attempting to connect to remote server..."));
136 
137             // Send message.
138             message.Send();
139         }
140     }
141 }
View Code

 

第二種服務器

  1 // 版權全部 ZhuoYue Co.,Ltd 卓越一通祕密信息
  2 // 文件名稱:MyEmail.cs
  3 // 做  者:huangzh
  4 // 建立日期:2015-08-20 08:37:07
  5 // 功能描述:郵件輔助類
  6 // 任務編號:
  7 using System;
  8 using System.Collections.Generic;
  9 using System.Linq;
 10 using System.Text;
 11 using System.Net.Mail;
 12 using System.Net.Mime;
 13 using System.IO;
 14 
 15 namespace ZhuoYueE.Bpc.Core.Email
 16 {
 17     /// <summary>
 18     /// 功能描述:郵件輔助類
 19     /// 做  者:huangzh
 20     /// 建立日期:2015-08-20 08:36:52
 21     /// 任務編號:
 22     /// </summary>
 23     public class MyEmailBySmtp
 24     {
 25         /// <summary>
 26         /// 主要處理髮送郵件的內容(如:收發人地址、標題、主體、圖片等等)
 27         /// </summary>
 28         private MailMessage m_mailMessage;
 29         /// <summary>
 30         /// 主要處理用smtp方式發送此郵件的配置信息(如:郵件服務器、發送端口號、驗證方式等等)
 31         /// </summary>
 32         private SmtpClient m_smtpClient;
 33         /// <summary>
 34         /// 發送郵件所用的端口號(htmp協議默認爲25)
 35         /// </summary>
 36         private int m_intsenderPort;
 37         /// <summary>
 38         /// 發件箱的郵件服務器地址(IP形式或字符串形式都可)
 39         /// </summary>
 40         private string m_strsenderServerHost;
 41         /// <summary>
 42         /// 發件箱的密碼
 43         /// </summary>
 44         private string m_strsenderPassword;
 45         /// <summary>
 46         /// 發件箱的用戶名(即@符號前面的字符串,例如:hello@163.com,用戶名爲:hello)
 47         /// </summary>
 48         private string m_strsenderUsername;
 49         /// <summary>
 50         /// 是否對郵件內容進行socket層加密傳輸
 51         /// </summary>
 52         private bool m_blnsnableSsl;
 53         /// <summary>
 54         /// 抄送
 55         /// </summary>
 56         private string m_strCC;
 57 
 58         ///<summary>
 59         /// 構造函數
 60         ///</summary>
 61         ///<param name="strserver">發件箱的郵件服務器地址</param>
 62         ///<param name="strtoMail">收件人地址(能夠是多個收件人,程序中是以「;"進行區分的)</param>
 63         ///<param name="strfromMail">發件人地址</param>
 64         ///<param name="strsubject">郵件標題</param>
 65         ///<param name="stremailBody">郵件內容(能夠以html格式進行設計)</param>
 66         ///<param name="strusername">發件箱的用戶名(即@符號前面的字符串,例如:hello@163.com,用戶名爲:hello)</param>
 67         ///<param name="strpassword">發件人郵箱密碼</param>
 68         ///<param name="intport">發送郵件所用的端口號(htmp協議默認爲25)</param>
 69         ///<param name="blnsslEnable">true表示對郵件內容進行socket層加密傳輸,false表示不加密</param>
 70         ///<param name="strCC">抄送</param>
 71         public MyEmailBySmtp(
 72             string strserver,
 73             string strtoMail,
 74             string strfromMail,
 75             string strsubject,
 76             string stremailBody,
 77             string strusername,
 78             string strpassword,
 79             int intport,
 80             bool blnsslEnable,
 81             string strCC)
 82         {
 83             try
 84             {
 85 
 86                 m_mailMessage = new MailMessage();
 87                 m_mailMessage.To.Add(strtoMail);
 88                 m_mailMessage.From = new MailAddress(strfromMail, strfromMail, Encoding.UTF8);
 89                 m_mailMessage.Subject = strsubject;
 90                 m_mailMessage.Body = stremailBody;
 91                 m_mailMessage.IsBodyHtml = true;
 92                 m_mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
 93                 m_mailMessage.Priority = MailPriority.High;
 94                 m_mailMessage.CC.Add(strCC);
 95                 this.m_strsenderServerHost = strserver;
 96                 this.m_strsenderUsername = strusername;
 97                 this.m_strsenderPassword = strpassword;
 98                 this.m_intsenderPort = intport;
 99                 this.m_blnsnableSsl = blnsslEnable;
100             }
101             catch
102             {
103                 throw;
104             }
105         }
106 
107         ///<summary>
108         /// 添加附件
109         ///</summary>
110         ///<param name="strattachmentsPath">附件的路徑集合,以分號分隔</param>
111         public void AddAttachments(string strattachmentsPath)
112         {
113             try
114             {
115                 //以什麼符號分隔能夠自定義
116                 string[] path = strattachmentsPath.Split(';');
117                 Attachment data;
118                 ContentDisposition disposition;
119                 for (int i = 0; i < path.Length; i++)
120                 {
121                     data = new Attachment(path[i], MediaTypeNames.Application.Octet);
122                     disposition = data.ContentDisposition;
123                     disposition.CreationDate = File.GetCreationTime(path[i]);
124                     disposition.ModificationDate = File.GetLastWriteTime(path[i]);
125                     disposition.ReadDate = File.GetLastAccessTime(path[i]);
126                     m_mailMessage.Attachments.Add(data);
127                 }
128 
129             }
130             catch
131             {
132                 throw;
133             }
134         }
135 
136         ///<summary>
137         /// 郵件的發送
138         ///</summary>
139         public void Send()
140         {
141             try
142             {
143 
144                 if (m_mailMessage != null)
145                 {
146                     m_smtpClient = new SmtpClient();
147                     m_smtpClient.Host = this.m_strsenderServerHost;
148                     m_smtpClient.Port = m_intsenderPort;
149                     m_smtpClient.UseDefaultCredentials = true;
150                     m_smtpClient.EnableSsl = this.m_blnsnableSsl;
151                     m_smtpClient.Credentials = new System.Net.NetworkCredential(this.m_strsenderUsername, this.m_strsenderPassword);
152                     m_smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
153 
154                     m_smtpClient.Send(m_mailMessage);
155                 }
156 
157             }
158             catch
159             {
160                 throw;
161             }
162         }
163     }
164 }
View Code

爲何這裏寫了2中方式呢???socket

我相信大多數人發送郵件使用第二種,可是有時候第二種方式是發不出去的,那麼什麼狀況發佈出去呢???ide

答曰:函數

當你使用公司內部郵件服務器發送郵件,而且須要SSL加密的時候,你就呵呵一下,第二種不行了,而後你能夠嘗試第一種了,最少我這裏是這種狀況。ui

 

我如今發送郵件的通常都用第一種的代碼了。this

 

有什麼問題,請留言吧。加密

相關文章
相關標籤/搜索