1. 程式人生 > >使用C#傳送郵件

使用C#傳送郵件

最近有使用者提出了一個新的需求,希望公司的ERP系統在交易申請書被批准以後自動發郵件到相關人員的郵箱中,讓他們能第一時間知道。因為他們不想多打一次電話,也不願意每天都開著ERP,但是他們的Outlook能每5分鐘自動掃描一次新郵件跳出提醒。使用者的需求並不過分,所以我就接下來了。

在VS2003中有一個專門的 System.Web.Mail 類用來處理,使用還是很簡單的,以前就寫過。

VS2005中做了升級,用一個新的 System.Net.Mail  類,由於我最近剛好在學習VS2005,所以拋棄了以前的那個程式,現學現賣就是想秀秀技術,其實也沒什麼技術含量的。

MailAddress from =new
 MailAddress("[email protected]""高升"); //郵件的發件人

MailMessage mail 
=new MailMessage();

//設定郵件的標題mail.Subject = txtSubject.Text;

//設定郵件的發件人
//Pass:如果不想顯示自己的郵箱地址,這裡可以填符合mail格式的任意名稱,真正發mail的使用者不在這裡設定,這個僅僅只做顯示用mail.From = from;

//設定郵件的收件人string address ="";
string displayName ="";
/*  這裡這樣寫是因為可能發給多個聯絡人,每個地址用 ; 號隔開
  一般從地址簿中直接選擇聯絡人的時候格式都會是 :使用者名稱1 < mail1 >; 使用者名稱2 < mail 2>; 
  因此就有了下面一段邏輯不太好的程式碼
  如果永遠都只需要發給一個收件人那麼就簡單了 mail.To.Add("收件人mail");
*/
string[] mailNames = (txtMailTo.Text +";").Split(';');
foreach (string name in mailNames)
{
    
if (name !=string.Empty)
    
{
        
if (name.IndexOf('<'>0)
        
{
            displayName 
= name.Substring(0, name.IndexOf('<'));
            address 
= name.Substring(name.IndexOf('<'
+1).Replace('>''');
        }
else{
            displayName 
=string.Empty;
            address 
= name.Substring(name.IndexOf('<'+1).Replace('>''');
        }

        mail.To.Add(
new MailAddress(address, displayName));
    }

}
//設定郵件的抄送收件人
//這個就簡單多了,如果不想快點下崗重要檔案還是CC一份給領導比較好mail.CC.Add(new MailAddress("[email protected]""尊敬的領導");

//設定郵件的內容mail.Body = txtBody.Text;
//設定郵件的格式mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml 
=true;
//設定郵件的傳送級別mail.Priority = MailPriority.Normal;

//設定郵件的附件,將在客戶端選擇的附件先上傳到伺服器儲存一個,然後加入到mail中string fileName = txtUpFile.PostedFile.FileName.Trim();
fileName 
="D:/UpFile/"+ fileName.Substring(fileName.LastIndexOf("/"+1);
txtUpFile.PostedFile.SaveAs(fileName); 
// 將檔案儲存至伺服器mail.Attachments.Add(new Attachment(fileName));

mail.DeliveryNotificationOptions 
= DeliveryNotificationOptions.OnSuccess;

SmtpClient client 
=new SmtpClient();
//設定用於 SMTP 事務的主機的名稱,填IP地址也可以了client.Host ="smtp.hotmail.com";
//設定用於 SMTP 事務的埠,預設的是 25
//client.Port = 25;client.UseDefaultCredentials =false;
//這裡才是真正的郵箱登陸名和密碼,比如我的郵箱地址是 [email protected], 我的使用者名稱為 hbgx ,我的密碼是 xgbhclient.Credentials =new System.Net.NetworkCredential("hbgx""xgbh");
client.DeliveryMethod 
= SmtpDeliveryMethod.Network;
//都定義完了,正式傳送了,很是簡單吧!client.Send(mail);

以前用 System.Web.Mail 類也寫過一個類似的,現在也貼出來吧,畢竟以前學習的時候也花了不少心血的

//用 System.Web.Mail 的寫法 MailMessage mail =new MailMessage();
mail.To 
= txtMailTo.Text; //收件人,多個收件人用 ; 號隔開,很是靈活
mail.Subject = txtSubject.Text; //主題
mail.Body = txtBody.Text;  //內容
mail.BodyFormat = MailFormat.Html;
mail.Priority 
= MailPriority.Normal;
//顯示的發件人
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendemailaddress""[email protected]");
//實際發件人
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpaccountname""[email protected]");
//使用者名稱
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername""hbgx");
//密碼
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword""xgbh");
mail.Fields.Add(
"http://schemas.microsoft.com/cdo/configuration/smtpauthenticate""1"); //驗證級別

SmtpMail.SmtpServer 
="smtp.hotmail.com";
SmtpMail.SmtpServer.Insert(
0"smtp.hotmail.com");
SmtpMail.Send(mail);

是不是以前的寫法靈活多了,當然現在也可以用了,因為在不同的名稱空間裡面所以使用上不會有衝突,不過升級了總有他的理由,兩個類之間用法還是有很多區別的,使用的時候要注意。

我是做開發的,不是專門的講師,寫錯的地方還批評指正,在CSDN上發訊息、留言或mail都行 不勝感激!

好了,要學的東西還很多,就到這裡了學習去了。

相關推薦

C# 傳送郵件(帶附加件傳送

有時候不太適合寫這些東西:不太會描述,因為在開發過程中遇到了,所以記錄一下,以便後面看看。 由於開發一直用的VS2015或者VS2017,所以不知道其他的版本開發情況,其實差不多 這是下面的核心程式碼:簡單的傳送郵件(不發附件):去掉新增附近的程式碼即可 string user = "***@163.

C# 傳送郵件功能實現

郵件傳送功能在OA以及一些網站驗證中很常用。下面是郵件傳送的一個函式,引數傳入收件人地址,郵件主題,郵件內容,讀者可根據自己的需求新增郵件的附件或者抄送人等。  /// <summary> /// 傳送郵件 /// </su

C# 傳送郵件內容嵌入圖片

我們在傳送郵件時,一般圖片都是用網路路徑,但有時如果接收方不可直接訪問外網,就不能看到圖片了,比如公司內部郵件,跟外界就沒法交流圖片。 那麼我們就來把圖片嵌入郵件中;檢視人就沒有限制了。 1。以linked的方式,此方式在郵件中不會出現圖片的附件   郵件內容呼

C#傳送郵件(新增附件)!

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.T

C#傳送郵件

public class Email { /// <summary> /// 傳送者 /// </summary> public string mailFrom { get; s

使用.net(C#)傳送郵件(帶成功案例)

1.瞭解傳送郵件的三種方式  第一:client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;  //通過遠端SMTP伺服器傳送該郵件,這裡的network表示你要使用的遠端SMTP伺服器。  第

一些關於C#傳送郵件的程式碼

SmtpClient smtp = new SmtpClient(); smtp.EnableSsl = false; smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.Host = "smtp.163.com"; smtp.Credentials

C# 傳送郵件 附件名稱為空

// 1.建立郵件 MailMessage mailMsg = new MailMessage(); mailMsg.To.Add(new MailAddress("[email protected]")); // 2.設定郵件標題、正文等資訊 mailMsg.HeadersEnco

C#傳送郵件(附件)類

本部落格主要利用C#中System.Net.Mail中的MailMessage 類進行郵件的傳送。話不多說直接上程式碼: using System; using System.Collections.Generic; using System.Conf

C++傳送郵件實現

首先,別忘了要設定傳送郵箱的smtp,例如,假設你需要用網易郵箱,你需要去你的163郵箱設定開啟smtp(有的郵箱還需要設定授權碼)。接著就可以用以下程式碼傳送郵件了: // SendMail.h #ifndef _SEND_MAIL_H_ #define

c#傳送郵件(帶抄送,密送,群發,附件)

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Mail; using System.Net.Mime; using System.Text; using

使用C#傳送郵件

最近有使用者提出了一個新的需求,希望公司的ERP系統在交易申請書被批准以後自動發郵件到相關人員的郵箱中,讓他們能第一時間知道。因為他們不想多打一次電話,也不願意每天都開著ERP,但是他們的Outlook能每5分鐘自動掃描一次新郵件跳出提醒。使用者的需求並不過分,所以我就接下來

一個C++ 傳送郵件的類

/*********************************************************************** *傳送郵件模組標頭檔案 *可以傳送文字和附件(支援多個附件一起傳送) **************************

[C#]SmtpClient傳送郵件

這幾天開發的從資料庫抓起資料處理完已郵件發出來,只實現的To的個人的傳送,To的群組,CC的個人和群組,BCC的個人和群組都沒有成功。試了好久,感覺是Exchange伺服器配置的問題,但又無法訪問Exchange的伺服器,所以暫時先放棄完善。 測試的過程中瞭解好多隻是,現在記錄一下 下面的程式碼示例演示如

C#實現.Net對郵件進行DKIM簽名和驗證,支援附件,傳送郵件簽名後直接投遞到對方伺服器(無需己方郵件伺服器)

專案地址 github.com/xiangyuecn/… 主要支援 對郵件進行DKIM簽名,支援帶附件 對整個郵件內容(.eml檔案)的DKIM簽名進行驗證 對MailMessage、SmtpClient進行了一次封裝,傳送郵件簡單易用,進行DKIM簽名後直接投遞到對方伺服器(無需己方郵件

c# .net傳送郵件方法

一、傳送郵件方法 1 ///<summary> 2 /// 傳送郵件方法 3 ///</summary> 4 ///<param name="mailTo">收件人郵箱</param

c# STMP類傳送郵件

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient { Host = "smtp.163.com",//使用163的SMTP伺服器傳送郵

C#中自動傳送郵件的實現

原始碼: using System; using System.Windows.Forms; using System.Net.Mail; using System.Text.RegularExpressions; namespace 郵件 { public partial clas

關於C#如何利用QQ郵箱SMTP傳送郵件

 今天寫傳送郵件的時候,用163可以正常傳送,但是利用QQ傳送不了郵件,後來發現是QQ郵箱的SMTP使用了SSL加密,所有必須啟用SSL加密,並且指定埠就可以傳送了。 public vo

C#實現郵件傳送的功能

1.實現原理: 微軟封裝好的MailMessage類:主要處理髮送郵件的內容(如:收發人地址、標題、主體、圖片等等) 微軟封裝好的SmtpClient類:主要處理用smtp方式傳送此郵件的配置資訊(如:郵件伺服器、傳送埠號、驗證方式等等) SmtpClient主要進行了三層的封裝:Socket