.NET環境下Email的技術介紹

iteye_20683發表於2009-12-17

出處:部落格園 作者:surprise 時間:2005-7-2 1:43:00

一、NET環境下幾種不同的郵件傳送解決方案

1、 WEB開發,在ASP.NET中引用System.Web.Mail類

郵件訊息是通過內建在 Microsoft Windows 2000 中的 SMTP 郵件服務或任意的 SMTP 伺服器來傳送的。System.Web.Mail 名稱空間中生成的SmtpMail類可用於在C#網路程式中傳送SMTP郵件。此名稱空間中的類可以在 ASP.NET 或任何託管應用程式。在System.Web.Mail中提供用於構造電子郵件附件的屬性和方法的類MailAttachment和用於構造電子郵件的屬性和方法的類MailMessage。

⑴ SmtpMail類

屬性:

SmtpServer 獲取或設定要用於傳送所有電子郵件的 SMTP 郵件伺服器的名稱。

方法:

Send() 傳送電子郵件。

⑵ MailMessage類

屬性:

Attachment 指定隨訊息一起傳輸的附件列表。
Bcc 獲取或設定以分號分隔的電子郵件地址列表,這些地址接收電子郵件的匿名副本 (BCC)。

Body 獲取或設定電子郵件的正文。

BodyEncoding 獲取或設定電子郵件正文的編碼型別。

BodyFormat 獲取或設定電子郵件正文的內容型別。

Cc 獲取或設定以分號分隔的電子郵件地址列表,這些地址接收電子郵件的抄送副本 (CC)。

From 獲取或設定發件人的電子郵件地址。

Headers 指定隨電子郵件一起傳輸的自定義標頭。

Priority 獲取或設定電子郵件的優先順序。

Subject 獲取或設定電子郵件的主題行。

To 獲取或設定收件人的電子郵件地址。

UrlContentBase 獲取或設定 Content-Base HTTP 標頭,即在 HTML 編碼的電子郵件正文中使用的所有相對URL 的 URL 基。

UrlContentLocation獲取或設定電子郵件的 Content-Location HTTP 標頭。

⑶ MailAttachment類

建構函式:

 public MailAttachment( string filename);

filename附件檔案的名稱。

程式碼如下:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Web.Mail;

namespace WebMail

{

public class WebForm1 : System.Web.UI.Page

{

protected System.Web.UI.WebControls.Button Button1;

private System.Web.Mail.MailMessage m_Mail;

private void Page_Load(object sender, System.EventArgs e)

{

m_Mail=new MailMessage();

}

#region Web Form Designer generated code

override protected void OnInit(EventArgs e)

{

InitializeComponent();

base.OnInit(e);

}

private void InitializeComponent()

{

this.Button1.Click += new System.EventHandler(this.Button1_Click);

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

private void Button1_Click(object sender, System.EventArgs e)

{

'定義SMTP伺服器的名稱

m_Mail.SmtpServer = "smtp.163.com";

'定義郵件的傳送地址

m_Mail.From=" lihonggen@163.com ";;

'定義郵件的接收地址

m_Mail.To = " lihonggen0@163.com";

'定義郵件的暗送地址

'm_Mail.Bcc "aa@sina.com"

'定義郵件的抄送地址

'm_Mail.Cc = "aaa@sina.com"

'定義郵件的主題

m_Mail.Subject = "主題";

'定義郵件的主體

m_Mail.Body = "郵件主體!";

'郵件以 HTML的格式傳送

m_Mail.BodyFormat = MailFormat.Html;

'定義郵件的有限級,在此設定為高

m_Mail.Priority = MailPriority.High;

'給傳送的郵件附加上一個附件

m_Mail.Attachments.Add(New MailAttachment("c:/lihonggen.doc"));

SmtpMail.Send(m_Mail);

}

}

}

2、 在開發Windows 應用程式中使用System.Net.Sockets

也是基於SMTP協議

一、SMTP協議簡介

⑴ 客戶端通過伺服器的25埠建立TCP/IP連線

伺服器端: 220 server.com Simple Mail Transfer Service Ready

⑵ 客戶端使用“HELO”命令標識發件人

客戶端:HELO server.com

伺服器端:250 server.com

⑶ 客戶端傳送MAIL命令,伺服器端以OK作為響應表明準備接收

客戶端: MAIL FROM:

伺服器端: 250 OK

⑷ 客戶端傳送RCPT命令標識收件人,伺服器端回應是否願意為收件人接受郵件

客戶端:RCPT TO: <d></d>

伺服器端:250 OK

⑸ 協商結束後用命令DATA傳送傳送郵件

客戶端:DATA

伺服器端:354 Start mail input: end with <crlf>.<crlf></crlf></crlf>

⑹ 客戶端以.表示結束輸入內容一起傳送出去

客戶端:Subject: <crlf></crlf>

內容<crlf></crlf>

.<crlf></crlf>

⑺ 客戶端用QUIT命令退出。

客戶端:QUIT

伺服器端:250 server.com closing transmission channel

優點:可以在此基礎上開發出自己的元件,利用Sockets我們可以進行網路程式設計開發

缺點:程式量相對較多,

因程式碼過長所以在此不顯示了

3、 IIS SMTP自帶的基本的發信元件CDONTS

你不必專門下載,微軟已經提供了這個元件,只要安裝了2000,NT的SMTP就會有的。

優點:元件由作業系統自帶

缺點:功能比較差,可擴充套件性不強

Mymail = CreateObject("CDONTS.NewMail")

Mymail.From = *** '信件傳送者信箱

Mymail.To = *** ‘信件接收者信箱

Mymail.CC = *** '抄送

Mymail.BCC = *** ’密件傳送

Mymail.Subject = *** ‘信件主題

Mymail.Body = *** ’信件正文

'設定優先順序,0-不重要,1-一般,2-重要。

Mymail.Importance = 2

Mymail.Send()

Mymail = Nothing

4、使用JMail元件

Jmail具有以下特點:

(1)可以傳送附件;
(2)詳細日誌能力,便於你檢視問題所在;
(3)設定郵件傳送的優先順序;
(4)支援多種格式的郵件傳送,比如說以HTML或者TXT的方式傳送郵件。這是個免費的元件。
(5)密件傳送/(CC)抄送/緊急信件傳送能力;
(6)最關鍵的就是--免費的元件,不必發錢,所以非常值得使用。

JMail元件的常用屬性:

Body 郵件正文

Logging 呼叫Log記錄,供Debug用

Priority 郵件的優先程度,從1到5

Sender 發件人

ServerAddress SMTP伺服器的IP地址或名稱

Subject 郵件標題

JMail元件的常用方法:

AddAttachment 指定附件檔案

AddRecipient 加入一個收件人

AddRecipientBCC 隱藏的副本抄送,只有發件人和BCC收件人知道。

AddRecipientCC 副本抄送

Execute 送出郵件

瞭解必要的屬性及方法後,餘下的部分接收使用者輸入的Email,當成引數傳給AddRecipient方法,然後根據需要填上其餘屬性,最後以Execute方法寄出。例如:

JMail = Server.CreateObject("JMail.SMTPMail")

JMail.Logging = True

JMail.ServerAddress = "202.96.144.48"

JMail.Sender = "lihonggen0@163.com"

JMail.Subject = "subject."

JMail.Body = "body."

JMail.AddRecipient("bbbb@163.com")

JMail.AddAttachment("c:/go.gif")

JMail.Priority = 3

JMail.Execute()

JMail = Nothing

二、NET環境下郵件接收解決方案

POP3協議是一個客戶讀取或接收儲存在遠端郵件伺服器上的郵件最常用的基本協議,一旦客戶機與伺服器建立一個連線,就傳送簡單文字命令,並且伺服器以恰當的資訊來響應。必須知道使用的命令是什麼,以什麼樣的順序發出,才能正確地從伺服器上收取信件。

注意點:在登陸伺服器時埠號應該是110

POP3的執行命令

首先手工輸入

telnet pop.163.com

1.許可權檢查命令

執行命令

描述

USER

使用者名稱

PASS

密碼

2.獲取資訊命令

執行命令

描述

STAT

響應包含郵件的數量和全部郵件大小

LIST

收到一份個人郵件列表,列出每封郵件的大小

3.檢索郵件

執行命令

描述

TOP

它能取得郵件的報頭並且從信件中挑出文字行的數目

RETR

返回郵件的全部位元組數目和整個郵件的文字

QUIT

終止會話,關閉郵箱

由於把每個功能都寫下來收件程式碼就會過長,因此只寫了USER、PASS、STAT執行命令http://www.cnblogs.com/surprise/archive/2004/09/24/46243.aspx#FeedBack,其它執行命令的程式碼請參考有關文件。

相關文章