Transcript

第 9 章 運用 CDO 物件寄發電子郵件

製作

h t tp : / /w w w .b i t c . c o m . tw

基本觀念 - E-mail 的相關協定

四種處理 E-mail 訊息的相關協定( protocol ):

SMTP POP IMAP MIME

h t tp : / /w w w .b i t c . c o m . tw

基本觀念 - E-mail 的相關協定

SMTP 簡單信件傳輸協定( Simple Mail Transfer

Protocol , SMTP )將規範郵件的傳送機制,定義於RFC 2821 ( http://www.ietf.org/rfc/rfc2821.txt )。

運用 CDO 物件處理 E-mail 訊息的程式,將與 SMTP 伺服器取得聯繫,將 E-mail 傳送至提供服務的 SMTP 伺服器,再將 E-mail 傳送給負責接收的 SMTP 伺服器,以便讓收信人經由 POP 或 IMAP 取得郵件。

h t tp : / /w w w .b i t c . c o m . tw

基本觀念 - E-mail 的相關協定

POP

POP 稱之為郵局協定( Post Office Protocol ),目前的版本為 POP 3 ,定義於 RFC 1939 ( http://www.ietf.org/rfc/rfc1939.txt ), POP 規範使用者取得 E-mail 伺服器上信件的機制。

使用 POP 3 協定時,無法查詢收件資料夾以外的其他資料夾。

h t tp : / /w w w .b i t c . c o m . tw

基本觀念 - E-mail 的相關協定

IMAP

網際網路訊息存取協定( Internet Message Access Protocol , IMAP )為接收訊息的進階協定,目前使用的版本為 IMAP4 ,定義於 RFC 2060 ( http://www.ietf.org/rfc/rfc2060.txt)。

運用 IMAP 協定時,必須確認郵件伺服器支援這個協定。

h t tp : / /w w w .b i t c . c o m . tw

基本觀念 - E-mail 的相關協定

MIME MIME 為多用途的網際網路信件擴充標準

( Multipurpose Internet Mail Extensions ),將規範傳輸內容的訊息、附件及其它內容的格式,與 MIME 相關的標準文件有 RFC 822 、RFC 2045 、 RFC 2046 和 RFC 2047 。

h t tp : / /w w w .b i t c . c o m . tw

基本觀念 - 簡介 CDO 物件

CDO 物件的全名為 Collaboration Data Objects ,程式設計師可運用 CDO 物件,為ASP 網頁建立郵件( Messaging )和共同作業( Collaboration )功能。

h t tp : / /w w w .b i t c . c o m . tw

基本觀念 - 簡介 CDO 物件

Message 物件 Message 物件用於處理 E-mail 的寄送資料與內容,

包含收件人、寄件人、信件主旨、內容…等,以及處理傳送 E-mail 之伺服器設定的 Configuration物件。

h t tp : / /w w w .b i t c . c o m . tw

基本觀念 - 簡介 CDO 物件

Configuration 物件 Configuration 物件用於管理使用 CDO 物件的相

關設定,傳送 E-mail 時,將設定傳送 E-mail 之伺服器的名稱、使用之連結埠與連線逾時時間…等。

h t tp : / /w w w .b i t c . c o m . tw

基本觀念 - 簡介 CDO 物件

BodyPart 物件 欲手動建立 MIME 格式的 Message 物件時,可

使用 BodyPart 協助建立。

h t tp : / /w w w .b i t c . c o m . tw

運用 CDO 物件寄送 E-mail - 用 ASP 網頁寄出信件

ASP 網頁內運用 CDO 物件寄送 E-mail ,必須按照以下三個步驟:

STEP 1 、建立 Configuration 物件,完成使用E-mail 伺服器的相關設定

STEP 2 、建立包含郵件內容的 Message 物件,並依序設定傳送郵件的寄件人、收件人、郵件主旨、寄送日期、信件內容

STEP 3 、傳送信件

h t tp : / /w w w .b i t c . c o m . tw

運用 CDO 物件寄送 E-mail - 用 ASP 網頁寄出信件

STEP 1 、建立 Configuration 物件,完成使用 E-mail 伺服器的相關設定

開始運用 CDO 物件寄發 E-mail 前,必須先建立Configuration 物件,語法如下:

Set 物件變數 = Server.CreateObject("CDO.Configuration")

h t tp : / /w w w .b i t c . c o m . tw

運用 CDO 物件寄送 E-mail - 用 ASP 網頁寄出信件

建立 Configuration 物件後,需取得 Fields 集合物件,並運用 item 方法設定傳送 E-mail 之伺服器。

設定各欄位(參數)時,將依照以下語法運用『 http://schemas.microsoft.com/cdo/configuration/ 』名稱空間指定。

http://schemas.microsoft.com/cdo/configuration/ 欄位名稱

h t tp : / /w w w .b i t c . c o m . tw

運用 CDO 物件寄送 E-mail - 用 ASP 網頁寄出信件

下表將說明幾個常用的欄位。

h t tp : / /w w w .b i t c . c o m . tw

運用 CDO 物件寄送 E-mail - 用 ASP 網頁寄出信件

STEP 2 、建立包含郵件內容的 Message 物件,並依序設定傳送郵件的寄件人、收件人、郵件主旨、寄送日期、信件內容

處理 E-mail 內容時,必須先建立 Message 物件,語法如下:

Set 物件變數 = Server.CreateObject("CDO.Message")

h t tp : / /w w w .b i t c . c o m . tw

運用 CDO 物件寄送 E-mail - 用 ASP 網頁寄出信件

建立 Message 物件後,接著,必須將處理寄送E-mail 相關設定之 Configuration 物件,設定給 Message 物件的 Configuration 屬性,如以下敘述:

Set msg.Configuration = conf' 將設定 E-mail 相關設定的 Configuration物件,設定給 Message 物件

h t tp : / /w w w .b i t c . c o m . tw

運用 CDO 物件寄送 E-mail - 用 ASP 網頁寄出信件

Message 物件的相關屬性列於下表:

h t tp : / /w w w .b i t c . c o m . tw

運用 CDO 物件寄送 E-mail - 用 ASP 網頁寄出信件

以下敘述將設定欲寄送 E-mail 的相關資料。

h t tp : / /w w w .b i t c . c o m . tw

運用 CDO 物件寄送 E-mail - 用 ASP 網頁寄出信件

STEP 3 、傳送信件 完成設定後,呼叫 Send 方法,便可開始傳送 E-

mail ,如以下敘述。 msg.Send

h t tp : / /w w w .b i t c . c o m . tw

運用 CDO 物件寄送 E-mail - 為信件加上附件

欲將檔案附加到 E-mail 裡,只要在建立 Message物件後,呼叫 AddAttachment 方法即可,語法如下:

Message 物件 .AddAttachment 檔案路徑與名稱 [, 帳號 [, 密碼 ]]

檔案路徑與名稱 : 欲建立為附件的檔案路徑與名稱。 帳號 : 選擇性參數。以 URL 路徑指定網頁做為附件

時,伺服器要求的使用者帳號。 密碼 : 選擇性參數。以 URL 路徑指定網頁做為附件

時,伺服器要求的帳號密碼。

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 以 HTML 語法建立 E-mail內容

欲寄送一封圖文並茂的 E-mail ,可以運用HTML 語法建立信件內容,但內容必須設定給Message 物件的 HTMLBody 屬性,語法如下:

Message 物件 .HTMLBody = HTML 格式的字串

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 以 HTML 語法建立 E-mail內容

若內容包含圖片,可以呼叫 Message 物件的AddRelatedBodyPart 方法,以 MIME 標準的關連內容之方式將圖檔加入郵件( Content-Type 將被設定為 multipart/related ),語法如下:

Message 物件 . AddRelatedBodyPart 檔案路徑與名稱 , 引用名稱 , 引用型態 [, 帳號[, 密碼 ]]

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 以 HTML 語法建立 E-mail內容

檔案路徑與名稱 : 欲建立為附件的檔案路徑與名稱。 引用名稱 : 供 E-mail 內 HTML 敘述引用圖檔的名稱。 引用型態 :

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 以 HTML 語法建立 E-mail 內容

HTML 敘述內,設定 <IMG> 標籤的 src 屬性時,必須以『 cid: 引用名稱』的方式引用圖檔,如以下敘述:<img src="cid:w2145" width="160">

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 以 HTML 語法建立 E-mail 內容

以下敘述則透過 URL 指定存在於網路上的檔案,將該圖檔加入 E-mail ,同樣以 w2145 的名稱引用。

URLPath = "http://bitc.myweb.hinet.net/books/images/A4033.jpg"

msg.AddRelatedBodyPart URLPath, "w2145", 1

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 指定 HTML 網頁建立郵件

Message 物件的 CreateMHTMLBody 方法可以運用 URL 指定網路上的網頁,然後以 E-mail 寄出該網頁的連結。

優點: 可以避免將 HTML 標籤串連成字串建立 E-mail 的

內容時,導致過於冗長的敘述。 若設定 E-mail 內容僅包含網頁的位址,並不包含

網頁引用的所有資源, E-mail 的體積比較小。

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 指定 HTML 網頁建立郵件

以下為 CreateMHTMLBody 方法的呼叫語法: Message 物件 .CreateMHTMLBody 網頁的

URL 路徑 [, 資源引用方式 [, 帳號 [, 密碼 ]]] 網頁的 URL 路徑 指定欲建立為 E-mail 之網頁的 URL 路徑。 資源引用方式 設定 E-mail 引用網頁相關連結資源的方式,所謂

的資源意指引用的圖檔、背景音樂…等 。各設定值的意義請參考下一張投影片。

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 指定 HTML 網頁建立郵件

下表將說明各設定值的意義:

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 指定 HTML 網頁建立郵件

帳號 選擇性參數。存放網頁之伺服器要求的使用者帳

號。若伺服器未要求,可省略。 密碼 選擇性參數。存放網頁之伺服器要求的帳號密碼。

若伺服器未要求,可省略。

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 指定 HTML 網頁建立郵件

以下敘述將運用 URL 路徑指定網頁,做為 E-mail郵件的內容。

URLPath = "http://bitc.myweb.hinet.net/books/database/A4033.htm"

msg.CreateMHTMLBody URLPath, 31 ' 以 URLPath 引用的網頁做為 E-mail 的內容,

且設定 E-mail 不包含引用的資源

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 手動運用 HTML 文件建立 MIME 郵件 E-mail 的架構 MIME 格式之 E-mail ,其架構分為 Header 與

Content兩大部分。 如下圖所示:

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 手動運用 HTML 文件建立 MIME 郵件

Header (郵件標題) - 郵件標題所包含的標準內容,說明如下表:

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 手動運用 HTML 文件建立 MIME 郵件 Content (郵件內容) - 包含郵件內文( Tex

t )與附件( Attachment )兩個部分。 郵件內容的顯示格式,將依照 Header 的

Content-Type 指定之方式呈現。 當郵件內容格式為 RTF ( Rich Text Format ),或者包含附件時, Content-Type 將設定為『 multipart/alternative 』。

若附加檔案為 E-mail 內容的一部份,則 Content-Type應設定為『 multipart/related 』。

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 手動運用 HTML 文件建立 MIME 郵件 運用 BodyPart 處理郵件內容 取得 Message 物件的 BodyPart 物件,語法如下: Set BodyPart 物件 = Message 物

件 .BodyPart 在 BodyPart 物件的 BodyParts 集合內,建立新

的 BodyPart 物件,並傳回該物件,語法如下: Set BodyPart 物件 = Message 物

件 .AddBodyPart

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 手動運用 HTML 文件建立 MIME 郵件 Charset BodyPart 物件包含內容使用的字元集(編碼)。

若使用繁體中文,應設定為 Big5 。 ContentMediaType 設定 BodyPart 物件包含之內容的型態與子型態,

以指定內容的性質。各種型態內容設定值之意義請參考下一章投影片。

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 手動運用 HTML 文件建立 MIME 郵件 下表為各種型態內容設定值之意義 :

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 手動運用 HTML 文件建立 MIME 郵件 ContentTransferEncoding 指定 BodyPart 物件包含內容使用的編碼,各編碼

的意義說明於下表:

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 手動運用 HTML 文件建立 MIME 郵件 將檔案內容匯入 BodyPart 物件 步驟如下: STEP 1 、取得包含 BodyPart 物件已解碼內容

的 Stream 物件 呼叫 BodyPart 物件的

GetDecodedContentStream 方法,語法如下: Set Stream 物件 = BodyPart 物

件 .GetDecodedContentStream

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 手動運用 HTML 文件建立 MIME 郵件 STEP 2 、呼叫 Stream 物件 LoadFromFile

方法載入指定檔案 以下語法為呼叫 Stream 物件的 LoadFromFile

方法,將檔案載入 Stream 物件。 Stream 物件 .LoadFromFile 檔案路徑與名

稱 檔案路徑與名稱 欲載入 Stream 物件之檔案的儲存位置路徑與名

稱。

h t tp : / /w w w .b i t c . c o m . tw

寄送 HTML 格式的信件 - 手動運用 HTML 文件建立 MIME 郵件 STEP 3 、呼叫 Stream 物件的 Flush 方法更新

Stream 物件的內容 將檔案載入 Stream 物件後,需呼叫 Flush 方法更新內容 Stream 物件內容,語法如下:

Stream 物件 .Flush


Recommended