狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

全面介紹C#實現簡單的SmtpClient及SSL發送帶附件郵件---Good!

admin
2017年11月7日 21:12 本文熱度 7528

SMTP(Simple Mail Transport Protocol)簡單郵件傳輸協議。在.NET Frameword類庫中提供SmtpClient類(System.Net.Mail),她提供了一個輕型方法來發送SMTP電子郵件信息。SmtpClient類中的Bcc屬性是用來指定此電子郵件抄送的收件人的集合,這就意味著可以為每個郵件制定多個收件地址。Attachmenty屬性也是一個集合,可以使用它為郵件添加多個附件。 發送郵件中用的其他類主要還有:

1. Attachment類,表示文件附件,它允許將文本、流、文件附加到電子郵件中。

2. MailAddress類,表示郵件地址。

3. MailMessage類,表示電子郵件。

            string host = "smtp.163.com";//   郵件服務器smtp.163.com表示網易郵箱服務器

            string userName = "15764226619@163.com";   //發送端賬號

            string password = "password";   //發送端密碼(這個客戶端重置后的密碼)

            SmtpClient mailClient = new SmtpClient(host);

            //SmtpClient mailClient = new SmtpClient(host, 25);

            //mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定電子郵件發送方式

            //Credentials登陸SMTP服務器的身份驗證.

            //mailClient.EnableSsl = false; //不啟用ssl加密

            mailClient.UseDefaultCredentials = true;

            mailClient.Credentials = new NetworkCredential(userName, password);

            //test@qq.com發件人地址、test@tom.com收件人地址

            MailMessage message = new MailMessage(new MailAddress("test@qq.com"),new MailAddress("test@tom.com"));

            //MailMessage message = new System.Net.Mail.MailMessage();  //另外一種方式創建發信連接,可以支持多人收信

            //message.From = new MailAddress(userName, "賬戶名");  //發信郵件賬戶

            //message.From = new MailAddress(userName, "賬戶名", System.Text.Encoding.UTF8);  //發信郵件賬戶,3個參數分別是發件人郵箱,發件人姓名,編碼

            //message.To.Add(new MailAddress("11@qq.com")); //收信主送郵件賬戶,可接受多個郵件地址,用逗號分隔即可,或者反復增加本行也可以接收多個收信人

            //message.To.Add(new MailAddress("11@qq.com", "賬戶名")); //收信主送郵件賬戶,含賬戶名

            //message.CC.Add(new MailAddress("21@qq.com")); //收信抄送郵件賬戶,可接受多個郵件地址,用逗號分隔即可,或者反復增加本行也可以接收多個收信人

            //message.Bcc.Add(new MailAddress("tst@qq.com")); //可以添加多個收件人,用逗號分隔即可

            //message.IsBodyHtml = true;

            //message.SubjectEncoding = System.Text.Encoding.UTF8;  //郵件主題編碼,采用UTF8格式

            //message.BodyEncoding = System.Text.Encoding.UTF8;

            //message.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");  //郵件內容編碼,采用GB2312格式

            //message.Priority = System.Net.Mail.MailPriority.High;

            message.Body = "Hello Word! 郵件發送測試";    //郵件內容

            message.Subject = "this is a test";   //郵件主題

            //Attachment 附件

            Attachment att = new Attachment(@"C:/hello.txt");

            message.Attachments.Add(att);   //添加附件

            //Attachment att1 = new Attachment(@"C:/welcome.txt");

            //message.Attachments.Add(att1);   //繼續添加附件

            Console.WriteLine("Start Send Mail....");

            //發送....

            mailClient.Send(message);

            Console.WriteLine("Send Mail Successed");

            Console.ReadLine();

注意上面的發件人地址和發信人賬號要一致,否則通不過驗證。OK,這樣就可以成功發送郵件了。


該文章在 2017/11/8 11:42:01 編輯過

全部評論4

admin
2017年11月7日 22:37
//C#多個郵件地址是否合法、重復、以及字符串首尾去逗號代碼及其他處理
string addresses = "";
AddressList = AddressList.Replace(",", ",").Replace(";", ",").Replace(";", ",").Trim();
string[] strArray = AddressList.Split(new char[] { '','' });
int length = strArray.Length;
for (int i = 0; i < length; i++)
{
//判斷地址是否合法、是否重復
    if (((strArray[i].Contains("@") && strArray[i].Contains(".")) && !addresses.ToLower().Contains((strArray[i] + ",").ToLower())) && (strArray[i].Trim
().ToLower().IndexOf(str.Trim().ToLower()) > 0))
    {
        addresses = addresses + strArray[i] + ",";
    }
}
if (addresses.EndsWith(","))
{
    addresses = addresses.Substring(0, addresses.Length - 1);
}
if (addresses.StartsWith(","))
{
    addresses = addresses.Substring(1, addresses.Length - 1);
}
mailMessage.To.Add(addresses);

該評論在 2017/11/7 22:37:55 編輯過
admin
2017年11月7日 22:44

我今天測試了一下,不管是什么免費郵箱的smtp,一般每天都會有郵件發送數量的上限,163一般為50封,qq一般為100f封,超過了這個上限當天就不允許再發送郵件了。

QQ郵箱不是你想進就進的。這種東西不是頭腦一熱就能成的,期望的與實際相差很遠。做什么項目都應該先考慮好,不要盲目的弄。
1.QQ郵箱那邊有內容檢測,廣告、鏈接、圖片盡量少帶;
2.IP頻繁問題,163會以你自己真實的IP進行發送(猜測,如果是服務器代發,那就和發件人有關);
3.發件人頻繁問題(發多了拉黑);
4.域名黑名單,ip黑名單(發多了拉黑,舉報核實拉黑);
5.被舉報可能被系統攔截(可以點擊我的信息->收信查詢->查看收件狀態);
6.個別短號的QQ郵箱是發不進的,切記。短號的攔截方式和長號的有些區別,如:666222與789456123的攔截方式不同。


其他可以嘗試的方法:

不借助第三方SMTP服務器,在本機安裝SMTP服務器,比如免費的Free SMTP Server。

裝完之后無需任何設置,啟動SMTP服務器,再運行上面的程序,一切正常。

但是如果使用本地的SMTP服務器(比如本機IIS的SMTP服務器)發送郵件,會被許多大型網站的郵箱當做垃圾郵件來處理,原因是本地SMTP服務器的地址并不為人所知,發送的郵件理所當然會被當做來歷不明的郵件,所以一般要借助一些大型知名網站的SMTP服務器來為我們發送郵件。


該評論在 2017/11/7 23:33:42 編輯過
admin
2017年11月7日 22:58
//異步執行,帶回調效果演示
SmtpClient smtp = new SmtpClient();
smtp.Host = mailServer.Host;
smtp.Port = 25;
smtp.EnableSsl = false;
smtp.UseDefaultCredentials = false;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(mailServer.Email,mailServer.Pwd);
smtp.EnableSsl = true;
smtp.SendCompleted += new SendCompletedEventHandler(smtp_SendCompleted);
MailAddress from = new MailAddress(mailServer.Email,"小王");
MailAddress to = new MailAddress(toMail,toMail.Substring(0,toMail.IndexOf("@")));
MailMessage mail = new MailMessage(from, to);
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
mail.ReplyTo = from;
mail.Sender = from;
mail.Subject = title;
mail.Body = content;
mail.BodyEncoding = Encoding.Default;
smtp.SendAsync(mail, toMail);

下面是SendAsync函數的回調函數:
void smtp_SendCompleted(object sender, AsyncCompletedEventArgs e)
        {
            string msg = e.UserState.ToString();
            SmtpClient smtp = (SmtpClient)sender;
            if (e.Error == null)//問題出現后,這里的Error并沒有錯誤
            {
                msg+= ",1";//發送成功
            }
            else
            {
                msg += ",0";
                smtp.SendAsyncCancel();
            }
            if (lvMailTo.InvokeRequired)
            {
                lvMailTo.BeginInvoke(new UpdateListDelegate(UpdateList), msg);
            }
            smtp.Dispose();
            _event.Set();
        }

該評論在 2017/11/7 23:52:14 編輯過
admin
2017年11月7日 23:9

使用C#和.Net通過SMTP發送郵件詳解

    到目前為止,發電子郵件已經不是什么新聞了,.Net中包含郵件客戶端并不足為奇。一個老的編程事實任然有效:所有程序將擴大到包括最終發送(接收)的電子郵件。因此,如何增加電子郵件到您的程序?此帖探討我們如何能夠使用System.Mail.SmtpClient發送格式化電子郵件。有許多可供選擇的選項,我們將探討其中的大多數。

   十五年以后事情變得相當容易.發送電子郵件最直接的就是調用一些基本的庫函數和.Net的一些固定的實現。

快速發送電子郵件
如果您迫不及待的話,可以使用下面帶有4字符串參數的
構造函數創建一個簡單的郵件。
// public client.Send(string from,string to,string subject,string body)
using System.Net.Mail;
SmtpClient client = new SmtpClient();
client.Send("
martijn@seamana.cn","test@seamana.cn","Testing!","If this break again,.. I won''t know what to do");
在上面的例子中的電子郵件使用系統的NET框架默認設置為發現的發送的。如果你對什么自己系統作為默認的SMTP服務器感到好奇,您可以查詢SmtpClient.Host
Console.WriteLine("Default SMTP Server: {0}",client.Host);
請注意,有可能.NET libraries是無法制訂SMTP主機,當您嘗試發送電子郵件會失敗并出現System.InvalidOperationException ( SMTP主機未指定)的異常。

發送一封合適的郵件
一個基本的電子郵箱是一個發件人,一個或多個收件人的郵件正文和一個或多個附件組成的。當然,電子郵件可能是一種過時的俄羅斯字體的編碼。
MailAddress toUser = new MailAddress("
martijn@seamana.cn");
MailAddress toUser2 = new MailAddress("
martijn@seamana.cn","Martijn Dijksterhuis");
MailAddress toUser3 = new MailAddress("
martijn@seamana.cn","Martijn Dijksterhuis", System.Text.Encoding.UTF8);
名字中不包括任何特殊的字符,所以指定默認的UTF - 8編碼。
 
發送一封只有單一的發送和接收者的電子郵件
如果您的電子郵件只包含一個單一的發送者和一個接收者,MailMessage ( MailAddress From, MailAddress To)構造函數提供了所有您所需要的。它創建一個新的電子郵件的結構,分配發送者和接收者的構造方法。
MailAddress toUser = new MailAddress("
myfriend@yahoo.com");
MailAddress fromUser = new MailAddress("
aishijie36@hotmail.com");
MailMessage msg  = new MailMessage(fromUser,toUser);
 
增加更多相同的電子郵件的接收者
一個單一的收件人可能是不夠的。不要擔心,您可以添加許多人到你的電子郵件,只要你想。
msg.To.Add( new MailAddress("
second_to@seamana.cn") );
msg.CC.Add( new MailAddress("
first_cc@seamana.cn") );
 msg.CC.Add( new MailAddress("
second_cc@seamana.cn") );
msg.Bcc.Add( new MailAddress("
first_bcc@seamana.cn") );
 
設置電子郵件主題和內容
設置電子郵件的主題,并不難,只需通過Msg.Subject設置它 。如果你可以使用如Unicode的其他方式編碼。
msg.Subject = "我的心太亂"
msg.SubjectEncoding = Encoding.GetEncoding("big5");
 
以非常類似的方式來設置郵件正文
msg.Body = "Dear Customer, " + Environment.NewLine + Environment.NewLine;
msg.Body += "Because of repeated violations of our terms and conditions we had no choice but to";
msg.Body += "terminate your account with us." + Environment.NewLine + Environment.NewLine;
msg.Body += "The Management";
msg.BodyEncoding = System.Text.Encoding.UTF8;
 
添加附件到電子郵件
電子郵件可以擁有一個以上的附件,每個附件的繼承于System.Net.Mail.Attachment類。您可以通過調用" Attachments.Add ( ) "把它們添加到附件容器。
using System.Net.Mime;
Attachment firstAttachment = new Attachment("document.doc",MediaTypeNames.Application.Octet);
MailMessage msg  = new MailMessage(fromUser,toUser);
msg.Attachments.Add(firstAttachement);
 
第一個參數傳遞給構造函數是包含附件的路徑。如果沒有完整的路徑,給出了當前的工作目錄。該文件類型的在System.Net.Mime中定義 -可用選項有:
MediaTypeNamesApplicationOctet
  PDF
  RTF
  Soap
  Zip
 ImageGif
  JPEG
  Tiff
 TextHTML
  Plain
  RichText
  XML

如果該類型的文件未指定使用MediaTypesNames.Application.Octet ,怎顯示"數據沒有解釋。 " 
 
添加自定義電子郵件標題到您的電子郵箱
Msg.Header屬性允許查詢和添加.NET框架所設定的電子郵件標題。全新的電子郵件將只包含一個標題: "Mine: 1.0 " 。
MailMessage Msg = new MailMessage(new  MailAddress("
martijn@seamana.cn"),newMailAddress("martijn@seamana.cn"));
 
// Add a custom header to the e-mail
Msg.Headers.Add("X-Header","2.0");
 
// Display all the message headers.
string[] Keys = Msg.Headers.AllKeys;
foreach (string s in Keys) 
Console.WriteLine("{0}: {1}", s,Msg.Headers[s]);
 
用SmtpClient發送電子郵件
  通過the SmtpClient class發送電子郵件的艱巨工作實際只需要下面兩行代碼:
SmtpClient client = new SmtpClient();
client.Send(Msg);
 
SmtpFailedRecipientsException: The message could not be delivered to one or more of the recipients in To, CC, or Bcc.
SmtpException : Connection failed, authentication failed or a time-out
ArgumentNullException / ArgumentOutOfRangeException / InvalidOperationException : Something wrong with the input fields of the e-mail
 
如果您沒有指定任何參數,SmtpClient默認構造函數將查找使用.NET環境。
SMTP服務器
您可以通過第二構造方法指定一個特定的服務器和可選端口
SmtpClient client = new SmtpClient("mail.dijksterhuis.org",3000); 
 
上述SmtpClient.Send是阻塞調用-當電子郵件傳送時您的應用程序應停止。當然也有一個

異步調用: SmtpClient.SendAsync 
使用SmtpClient.SendAsync是多做一點工作。如何做到這一點請看以下示例:
using System;

using System.Net.Mail;

using System.Threading;

using System.ComponentModel;

namespace SnmpMailer

  

  class MainClass   

        

   static Semaphore mailSendSemaphore;        

   private static void MailSendCallback(object sender, AsyncCompletedEventArgs arg)  

             

      // Get our unique token for this asynchronous operation.           

     String token = (string) arg.UserState;            

      // Did the user abort the sent ?           

     if (arg.Cancelled)               

        Console.WriteLine("[{0}] Send canceled.", token);         

      // Did an error occur during the send?           

     if (arg.Error != null)                

        Console.WriteLine("[{0}] {1}", token, arg.Error.ToString());              

      else               

        Console.WriteLine("Message sent succesfully!");            

      // Release the main thread           

      mailSendSemaphore.Release();       

            

 

  public static void Main(string[] args)       

            

   mailSendSemaphore = new Semaphore(0,1);   

   // Create the mail message with to &amp;amp;amp;amp;amp;amp;amp;amp; from   

    MailMessage Msg = new MailMessage(new MailAddress("noreply@dijksterhuis.org"), 

                    new MailAddress("martijn@dijksterhuis.org"));            

    Msg.Body = "Dear Customer, " + Environment.NewLine + Environment.NewLine;   

    Msg.Body += "Because of repeated violations of our terms and conditions we had

                no choice  but to";           

    Msg.Body += "terminate your account with us." + Environment.NewLine   

               Environment.NewLine;   

    Msg.Body += "The Management";           

    Msg.BodyEncoding = System.Text.Encoding.UTF8;   

    // Set the subject           

    Msg.Subject = "Termination of service notice"; 

    // Add our own header           

    Msg.Headers.Add("X-Deliverator","Terminator");    

    // Deliver the message in an asynchronous fashion           

    SmtpClient Deliverator = new SmtpClient("mymailserver.com");   

    // Print the default client           

    Console.WriteLine("Default SMTP Server: {0}",Deliverator.Host);  

    // Specify the call back function           

    Deliverator.SendCompleted += new SendCompletedEventHandle(MailSendCallback); 

    // For an asyncronous call we can pass a token to help us determine

    //  the message being send  

    Deliverator.SendAsync(Msg,"Msg ID 1212");   

    // Because we have little else to do, we set a semaphore and wait               

    mailSendSemaphore.WaitOne();            

    Console.WriteLine("Mail delivery finished");       

      

  }

}


該評論在 2017/11/8 0:02:31 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved