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

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

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

admin
2017年11月8日 0:0 本文熱度 7369

    到目前為止,發(fā)電子郵件已經(jīng)不是什么新聞了,.Net中包含郵件客戶端并不足為奇。一個(gè)老的編程事實(shí)任然有效:所有程序?qū)U(kuò)大到包括最終發(fā)送(接收)的電子郵件。因此,如何增加電子郵件到您的程序?此帖探討我們?nèi)绾文軌蚴褂肧ystem.Mail.SmtpClient發(fā)送格式化電子郵件。有許多可供選擇的選項(xiàng),我們將探討其中的大多數(shù)。

   十五年以后事情變得相當(dāng)容易.發(fā)送電子郵件最直接的就是調(diào)用一些基本的庫函數(shù)和.Net的一些固定的實(shí)現(xiàn)。

快速發(fā)送電子郵件
如果您迫不及待的話,可以使用下面帶有4字符串參數(shù)的
構(gòu)造函數(shù)創(chuàng)建一個(gè)簡單的郵件。
// 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");
在上面的例子中的電子郵件使用系統(tǒng)的NET框架默認(rèn)設(shè)置為發(fā)現(xiàn)的發(fā)送的。如果你對什么自己系統(tǒng)作為默認(rèn)的SMTP服務(wù)器感到好奇,您可以查詢SmtpClient.Host
Console.WriteLine("Default SMTP Server: {0}",client.Host);
請注意,有可能.NET libraries是無法制訂SMTP主機(jī),當(dāng)您嘗試發(fā)送電子郵件會失敗并出現(xiàn)System.InvalidOperationException ( SMTP主機(jī)未指定)的異常。

發(fā)送一封合適的郵件
一個(gè)基本的電子郵箱是一個(gè)發(fā)件人,一個(gè)或多個(gè)收件人的郵件正文和一個(gè)或多個(gè)附件組成的。當(dāng)然,電子郵件可能是一種過時(shí)的俄羅斯字體的編碼
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);
名字中不包括任何特殊的字符,所以指定默認(rèn)的UTF - 8編碼。
 
發(fā)送一封只有單一的發(fā)送和接收者的電子郵件
如果您的電子郵件只包含一個(gè)單一的發(fā)送者和一個(gè)接收者,MailMessage ( MailAddress From, MailAddress To)構(gòu)造函數(shù)提供了所有您所需要的。它創(chuàng)建一個(gè)新的電子郵件的結(jié)構(gòu),分配發(fā)送者和接收者的構(gòu)造方法。
MailAddress toUser = new MailAddress("
myfriend@yahoo.com");
MailAddress fromUser = new MailAddress("
aishijie36@hotmail.com");
MailMessage msg  = new MailMessage(fromUser,toUser);
 
增加更多相同的電子郵件的接收者
一個(gè)單一的收件人可能是不夠的。不要擔(dān)心,您可以添加許多人到你的電子郵件,只要你想。
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") );
 
設(shè)置電子郵件主題和內(nèi)容
設(shè)置電子郵件的主題,并不難,只需通過Msg.Subject設(shè)置它 。如果你可以使用如Unicode的其他方式編碼。
msg.Subject = "我的心太亂"
msg.SubjectEncoding = Encoding.GetEncoding("big5");
 
以非常類似的方式來設(shè)置郵件正文
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;
 
添加附件到電子郵件
電子郵件可以擁有一個(gè)以上的附件,每個(gè)附件的繼承于System.Net.Mail.Attachment類。您可以通過調(diào)用" 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);
 
第一個(gè)參數(shù)傳遞給構(gòu)造函數(shù)是包含附件的路徑。如果沒有完整的路徑,給出了當(dāng)前的工作目錄。該文件類型的在System.Net.Mime中定義 -可用選項(xiàng)有:
MediaTypeNamesApplicationOctet
  PDF
  RTF
  Soap
  Zip
 ImageGif
  JPEG
  Tiff
 TextHTML
  Plain
  RichText
  XML

如果該類型的文件未指定使用MediaTypesNames.Application.Octet ,怎顯示"數(shù)據(jù)沒有解釋。 " 
 
添加自定義電子郵件標(biāo)題到您的電子郵箱
Msg.Header屬性允許查詢和添加.NET框架所設(shè)定的電子郵件標(biāo)題。全新的電子郵件將只包含一個(gè)標(biāo)題: "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發(fā)送電子郵件
  通過the SmtpClient class發(fā)送電子郵件的艱巨工作實(shí)際只需要下面兩行代碼:
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
 
如果您沒有指定任何參數(shù),SmtpClient默認(rèn)構(gòu)造函數(shù)將查找使用.NET環(huán)境。
SMTP服務(wù)器
您可以通過第二構(gòu)造方法指定一個(gè)特定的服務(wù)器和可選端口
SmtpClient client = new SmtpClient("mail.dijksterhuis.org",3000); 
 
上述SmtpClient.Send是阻塞調(diào)用-當(dāng)電子郵件傳送時(shí)您的應(yīng)用程序應(yīng)停止。當(dāng)然也有一個(gè)

異步調(diào)用: SmtpClient.SendAsync 
使用SmtpClient.SendAsync是多做一點(diǎn)工作。如何做到這一點(diǎn)請看以下示例:
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 & 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:00:48 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved