第 9 章 運用CDO物件寄發 電子郵件 製作
基本觀念 - E-mail的相關協定 四種處理E-mail訊息的相關協定(protocol): SMTP POP IMAP MIME
基本觀念 - 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取得郵件。
基本觀念 - E-mail的相關協定 POP POP稱之為郵局協定(Post Office Protocol),目前的版本為POP 3,定義於RFC 1939(http://www.ietf.org/rfc/rfc1939.txt),POP規範使用者取得E-mail伺服器上信件的機制。 使用POP 3協定時,無法查詢收件資料夾以外的其他資料夾。
基本觀念 - E-mail的相關協定 IMAP 網際網路訊息存取協定(Internet Message Access Protocol,IMAP)為接收訊息的進階協定,目前使用的版本為 IMAP4,定義於RFC 2060(http://www.ietf.org/rfc/rfc2060.txt)。 運用IMAP協定時,必須確認郵件伺服器支援這個協定。
基本觀念 - E-mail的相關協定 MIME MIME為多用途的網際網路信件擴充標準(Multipurpose Internet Mail Extensions),將規範傳輸內容的訊息、附件及其它內容的格式,與MIME相關的標準文件有RFC 822、RFC 2045、RFC 2046和RFC 2047。
基本觀念 - 簡介CDO物件 CDO物件的全名為Collaboration Data Objects,程式設計師可運用CDO物件,為ASP網頁建立郵件(Messaging)和共同作業(Collaboration)功能。
基本觀念 - 簡介CDO物件 Message物件 Message物件用於處理E-mail的寄送資料與內容,包含收件人、寄件人、信件主旨、內容…等,以及處理傳送E-mail之伺服器設定的Configuration物件。
基本觀念 - 簡介CDO物件 Configuration物件 Configuration物件用於管理使用CDO物件的相關設定,傳送E-mail時,將設定傳送E-mail之伺服器的名稱、使用之連結埠與連線逾時時間…等。
基本觀念 - 簡介CDO物件 BodyPart物件 欲手動建立MIME格式的Message物件時,可使用BodyPart協助建立。
運用CDO物件寄送E-mail - 用ASP網頁寄出信件 ASP網頁內運用CDO物件寄送E-mail,必須按照以下三個步驟: STEP 1、建立Configuration物件,完成使用E-mail伺服器的相關設定 STEP 2、建立包含郵件內容的Message物件,並依序設定傳送郵件的寄件人、收件人、郵件主旨、寄送日期、信件內容 STEP 3、傳送信件
運用CDO物件寄送E-mail - 用ASP網頁寄出信件 STEP 1、建立Configuration物件,完成使用E-mail伺服器的相關設定 開始運用CDO物件寄發E-mail前,必須先建立Configuration物件,語法如下: Set 物件變數 = Server.CreateObject("CDO.Configuration")
運用CDO物件寄送E-mail - 用ASP網頁寄出信件 建立Configuration物件後,需取得Fields集合物件,並運用item方法設定傳送E-mail之伺服器。 設定各欄位(參數)時,將依照以下語法運用『http://schemas.microsoft.com/cdo/configuration/』名稱空間指定。 http://schemas.microsoft.com/cdo/configuration/欄位名稱
運用CDO物件寄送E-mail - 用ASP網頁寄出信件 下表將說明幾個常用的欄位。
運用CDO物件寄送E-mail - 用ASP網頁寄出信件 STEP 2、建立包含郵件內容的Message物件,並依序設定傳送郵件的寄件人、收件人、郵件主旨、寄送日期、信件內容 處理E-mail內容時,必須先建立Message物件,語法如下: Set 物件變數 = Server.CreateObject("CDO.Message")
運用CDO物件寄送E-mail - 用ASP網頁寄出信件 建立Message物件後,接著,必須將處理寄送E-mail相關設定之Configuration物件,設定給Message物件的Configuration屬性,如以下敘述: Set msg.Configuration = conf '將設定E-mail相關設定的Configuration物件,設定給Message物件
運用CDO物件寄送E-mail - 用ASP網頁寄出信件 Message物件的相關屬性列於下表:
運用CDO物件寄送E-mail - 用ASP網頁寄出信件
運用CDO物件寄送E-mail - 用ASP網頁寄出信件 STEP 3、傳送信件 完成設定後,呼叫Send方法,便可開始傳送E-mail,如以下敘述。 msg.Send
運用CDO物件寄送E-mail - 為信件加上附件 欲將檔案附加到E-mail裡,只要在建立Message物件後,呼叫AddAttachment方法即可,語法如下: Message物件.AddAttachment 檔案路徑與名稱[, 帳號[, 密碼]] 檔案路徑與名稱:欲建立為附件的檔案路徑與名稱。 帳號:選擇性參數。以URL路徑指定網頁做為附件時,伺服器要求的使用者帳號。 密碼:選擇性參數。以URL路徑指定網頁做為附件時,伺服器要求的帳號密碼。
寄送HTML格式的信件 - 以HTML語法建立E-mail內容 欲寄送一封圖文並茂的E-mail,可以運用HTML語法建立信件內容,但內容必須設定給Message物件的HTMLBody屬性,語法如下: Message物件.HTMLBody = HTML格式的字串
寄送HTML格式的信件 - 以HTML語法建立E-mail內容 若內容包含圖片,可以呼叫Message物件的AddRelatedBodyPart方法,以MIME標準的關連內容之方式將圖檔加入郵件(Content-Type將被設定為multipart/related),語法如下: Message物件. AddRelatedBodyPart 檔案路徑與名稱, 引用名稱, 引用型態 [, 帳號[, 密碼]]
寄送HTML格式的信件 - 以HTML語法建立E-mail內容 檔案路徑與名稱: 欲建立為附件的檔案路徑與名稱。 引用名稱: 供E-mail內HTML敘述引用圖檔的名稱。 引用型態:
寄送HTML格式的信件 - 以HTML語法建立E-mail內容 HTML敘述內,設定<IMG>標籤的src屬性時,必須以『cid:引用名稱』的方式引用圖檔,如以下敘述: <img src="cid:w2145" width="160">
寄送HTML格式的信件 - 以HTML語法建立E-mail內容 以下敘述則透過URL指定存在於網路上的檔案,將該圖檔加入E-mail,同樣以w2145的名稱引用。 URLPath = "http://bitc.myweb.hinet.net/books/images/A4033.jpg" msg.AddRelatedBodyPart URLPath, "w2145", 1
寄送HTML格式的信件 - 指定HTML網頁建立郵件 Message物件的CreateMHTMLBody方法可以運用URL指定網路上的網頁,然後以E-mail寄出該網頁的連結。 優點: 可以避免將HTML標籤串連成字串建立E-mail的內容時,導致過於冗長的敘述。 若設定E-mail內容僅包含網頁的位址,並不包含網頁引用的所有資源,E-mail的體積比較小。
寄送HTML格式的信件 - 指定HTML網頁建立郵件 以下為CreateMHTMLBody方法的呼叫語法: Message物件.CreateMHTMLBody 網頁的URL路徑[, 資源引用方式 [,帳號 [,密碼]]] 網頁的URL路徑 指定欲建立為E-mail之網頁的URL路徑。 資源引用方式 設定E-mail引用網頁相關連結資源的方式,所謂的資源意指引用的圖檔、背景音樂…等 。各設定值的意義請參考下一張投影片。
寄送HTML格式的信件 - 指定HTML網頁建立郵件 下表將說明各設定值的意義:
寄送HTML格式的信件 - 指定HTML網頁建立郵件 帳號 選擇性參數。存放網頁之伺服器要求的使用者帳號。若伺服器未要求,可省略。 密碼 選擇性參數。存放網頁之伺服器要求的帳號密碼。若伺服器未要求,可省略。
寄送HTML格式的信件 - 指定HTML網頁建立郵件 以下敘述將運用URL路徑指定網頁,做為E-mail郵件的內容。 URLPath = "http://bitc.myweb.hinet.net/books/database/A4033.htm" msg.CreateMHTMLBody URLPath, 31 '以URLPath引用的網頁做為E-mail的內容,且設定E-mail不包含引用的資源
寄送HTML格式的信件 - 手動運用HTML文件建立MIME郵件 E-mail的架構 MIME格式之E-mail,其架構分為Header與Content兩大部分。 如下圖所示:
寄送HTML格式的信件 - 手動運用HTML文件建立MIME郵件 Header(郵件標題) - 郵件標題所包含的標準內容,說明如下表:
寄送HTML格式的信件 - 手動運用HTML文件建立MIME郵件 Content(郵件內容) - 包含郵件內文(Text)與附件(Attachment)兩個部分。 郵件內容的顯示格式,將依照Header的Content-Type指定之方式呈現。 當郵件內容格式為RTF(Rich Text Format),或者包含附件時,Content-Type將設定為『multipart/alternative』。 若附加檔案為E-mail內容的一部份,則Content-Type應設定為『multipart/related』。
寄送HTML格式的信件 - 手動運用HTML文件建立MIME郵件 運用BodyPart處理郵件內容 取得Message物件的BodyPart物件,語法如下: Set BodyPart物件 = Message物件.BodyPart 在BodyPart物件的BodyParts集合內,建立新的BodyPart物件,並傳回該物件,語法如下: Set BodyPart物件 = Message物件.AddBodyPart
寄送HTML格式的信件 - 手動運用HTML文件建立MIME郵件 Charset BodyPart物件包含內容使用的字元集(編碼)。若使用繁體中文,應設定為Big5。 ContentMediaType 設定BodyPart物件包含之內容的型態與子型態,以指定內容的性質。各種型態內容設定值之意義請參考下一章投影片。
寄送HTML格式的信件 - 手動運用HTML文件建立MIME郵件 下表為各種型態內容設定值之意義:
寄送HTML格式的信件 - 手動運用HTML文件建立MIME郵件 ContentTransferEncoding 指定BodyPart物件包含內容使用的編碼,各編碼的意義說明於下表:
寄送HTML格式的信件 - 手動運用HTML文件建立MIME郵件 將檔案內容匯入BodyPart物件 步驟如下: STEP 1、取得包含BodyPart物件已解碼內容的Stream物件 呼叫BodyPart物件的GetDecodedContentStream方法,語法如下: Set Stream物件 = BodyPart物件.GetDecodedContentStream
寄送HTML格式的信件 - 手動運用HTML文件建立MIME郵件 STEP 2、呼叫Stream物件LoadFromFile方法載入指定檔案 以下語法為呼叫Stream物件的LoadFromFile方法,將檔案載入Stream物件。 Stream物件.LoadFromFile 檔案路徑與名稱 檔案路徑與名稱 欲載入Stream物件之檔案的儲存位置路徑與名稱。
寄送HTML格式的信件 - 手動運用HTML文件建立MIME郵件 STEP 3、呼叫Stream物件的Flush方法更新Stream物件的內容 將檔案載入Stream物件後,需呼叫Flush方法更新內容Stream物件內容,語法如下: Stream物件.Flush