傳送郵件
選項說明
直接送信到收件者的郵件伺服器 | ___封信就回寄至帳號 | 啟動Mail Merge功能 | 跳過已送出的郵件 | 同一伺服器一次可傳送的人數 | 郵件名單狀態的說明 |
【直接送信到收件者的郵件伺服器】則是親自扮演轉信主機的角色,可免除以上問題,也不會因借用他人主機轉信而有盜用資源之嫌。不過,它的速度會較慢,您可以依需要而選擇最適合您的設定。
親愛的用戶:
您的會員資格將於近日到期,請盡速繳納會費,謝謝您的支持與合作。
親愛的王小明 先生:
您的會員資格將於七月五日到期,請於八月五日前繳納會費,謝謝您的支持與合作。
兩者一經比較,有了「Mail Merge」當然會讓信件更加清楚!
《使用「Mail Merge」基本方法》
無論是用Outlook/Netscape或是內附的編信軟體,您只要打入: #$FieldName# ,就可以將資料庫中’FieldName’自動取代此一部份。請注意,資料庫中必須有此欄位,否則會出現錯誤訊息。
如果您的原始資料剛好有
”#$”,則請將它改為”#$$”以茲區別。在用Outlook或Netscape編信時,請不要用”Base64”或”Quoted Printable”來將郵件內文字編碼,這樣會使Mail Merge找不到要轉換的欄位。
在Outlook Express下,請至”工具/選項/傳送/郵件傳送格式/設定/文字編碼方式”,設成”無”。如果用”Quoted
Printable”也可以,但是這樣就不可以使用中文的資料庫欄位了!
Mail Merge最新功能: 增加特殊變數讓Mail Merge使用,例如Date、Time、Now、Random、Serial、Username、Domain、ServerDomain等,讓使用者可以在不增加資料庫欄位的情況下產生出每封都不同的電子郵件,並可自訂該變數的格式。另外針對資料庫欄位,也設計特定的格式型態供使用者自行設定使用。 |
變數與格式 |
詳細說明 |
Date[,formatDt] | 產生出目前(送信的那一刻)的日期,可在後面加上格式。例如:想要將目前的日期顯示成 1999/01/15,則其格式須設成 #%Date,'yyyy/mm/dd'# |
Time[,formatDt] | 產生出目前(送信的那一刻)的時間,可在後面加上格式。例如:想要將目前時間顯示成 10:30AM,則其格式須設成 #%Time,'hh:mm AM/PM'# |
Now[,formatDt] | 產生出目前(送信的那一刻)的日期時間,可在後面加上格式。例如:想要將目前的日期時間顯示成 1999/01/15 星期五 pm01:27:34,則其格式須設成 #%Now,'yyyy/mm/dd dddd am/pmhh:nn:ss'# |
Random[,max][,min][,formatNum] | 產生一個亂數,從min到max之間。例如:格式設定為 #%random,,,'%d'#,則產生結果會是一亂數如 71441061 (每次產生出來的亂數都會不同),在此例子中,max及min不指定,則會被略過,而formatNum則要求用十進位產生出該數字。 |
Serial[,formatNum] | 產生一個流水號, 從1開始, 每封信自動加一。例如:格式設定為 #%Serial,'%.4x'#,如果流水號由1開始,則產生結果會是 0001 |
UserName | 產生出收信者名稱,例如:格式設定為 #%UserName#,則"abc@test.com"的產生結果為 abc |
Domain | 產生出收信者的網域名稱,例如:格式設定為 #%domain#,則"abc@test.com"的產生結果為 test.com |
ServerDomain[,ExcludeLevel] | 產生出目前郵件伺服器的網域名稱,此伺服器是您列出"可使用的郵件伺服器"之一或是與Domain相同(假如您直接送信) 而ExcludeLevel則是要去掉網域名稱的頭, 以製造出稍微不同的機器名稱 如#%ServerDomain,1#, 而server為"smtp.server.com", 則會得到"server.com" 您可以用類似machine1.#%ServerDomain,1#製造出網域相同但機器名不同的位址 |
以上這些變數必須介於特殊符號 #%........# 當中,如:#%Date,'yy/mm/dd'#。您可針對個人的喜好自訂格式,設定的格式必須在單引號 '....' 或雙引號 "...." 當中。如果您不訂格式,則程式將會為您訂一預設的格式。
資料庫欄位與格式 |
詳細說明 |
FieldName[,type][,format] | FieldName為資料庫任一欄位,可在後面加上格式,而 format 格式會依欄位型態的不同而須設定成 formatDt 或 formatNum。例如:有一資料庫欄位名是 "付款否",想要設定使用者是否已付款,則格式設定為 #$付款否,B,'已/未曾'#,B表示 boolean (邏輯型態),已/未曾則是它顯示的格式,以斜線符號作分隔。 |
以上這些變數必須介於特殊符號
#$........# 當中,如:#%Paid,B,'have/have
not'#。您可針對個人的喜好自訂格式,設定的格式必須在單引號 '....'
或雙引號 "...."
當中。如果您不訂格式,則程式將會為您訂一預設的格式。
formatDt (日期時間類的格式) 說明如下:
formatDt | 顯示說明 |
c | 顯示日期,接著時間,如果分數部份的值是0,則時間不顯示,使用系統預設格式。 |
d | 以數字顯示日,前面沒有0 (如:1-31)。 |
dd | 以數字顯示日,前面有0 (如:01-31)。 |
ddd | 顯示星期的縮寫 (如:Sun-Sat) ,使用系統預設格式。 |
dddd | 顯示星期的全名 (如:Sunday-Saturday),使用系統預設格式。 |
ddddd | 顯示簡短的日期,使用系統預設格式。 |
dddddd | 顯示詳述的日期,使用系統預設格式。 |
m | 以數字顯示月份,前面沒有0 (如:1-12) 。如果m是緊跟著h或 hh出現,則m是表示分鐘而不是月份。 |
mm | 以數字顯示月份,前面有0。如果mm是緊跟著h或 hh出現,則mm是表示分鐘而不是月份。 |
mmm | 顯示月份的縮寫 (如:Jan-Dec) ,使用系統預設格式。 |
mmmm | 顯示月份的全名 (如:January-December),使用系統預設格式。 |
yy | 以2碼數字顯示年 (如:00-99)。 |
yyyy | 以4碼數字顯示年 (如:0000-9999)。 |
h | 顯示小時,前面沒有0 (如:0-23)。 |
hh | 顯示小時,前面有0 (如:00-23)。 |
n | 顯示分鐘,前面沒有0 (如:0-59)。 |
nn | 顯示分鐘,前面有0 (如:00-59)。 |
s | 顯示秒,前面沒有0 (如:0-59)。 |
ss | 顯示秒,前面有0 (如:00-59)。 |
t | 顯示簡短的時間,使用系統預設格式。 |
tt | 顯示詳述的時間,使用系統預設格式。 |
am/pm | 使用12小時制,前面有 h或 hh格式,'am' 表示中午以前,'pm' 表示中午以後,am/pm可用小寫、大寫或大小寫混合,顯示結果會依設定的大寫或小寫而定。 |
a/p | 使用12小時制,前面有 h或 hh格式,'a' 表示中午以前,'p' 表示中午以後,a/p可用小寫、大寫或大小寫混合,顯示結果會依設定的大寫或小寫而定。 |
ampm | 使用12小時制,前面有 h或 hh格式,ampm的內容使用系統預設格式。 |
/ | 顯示日期的分隔符號,使用系統預設格式。 |
: | 顯示時間的分隔符號,使用系統預設格式。 |
'xx'/"xx" | 包含在單引號或雙引號中的字串會直接顯示出來,它不會影響格式化 (如:引號內格式訂為 "I am smart",則顯示出來的字串即為 I am smart。 |
formatNum (數字類的格式) 的形式如下:
"%" [索引 ":"] ["-"] [寬度]
["." 精確度] Type
它的形式由%開始,而接在%後面的中括弧內的指定格式是選擇性的,您可以指定,也可不指定它的格式,而最後面可能出現的數值型態(Type)說明如下:
Type | 顯示說明 |
d | 小數 (Decimal)。傳入引數必須是整數,數值會被轉換成小數點字串,如果字串含精確度的指定格式,則產生的結果字串至少必須包含指定精確度的位數;如果數值含較少的位數,則產生的結果字串左邊會補 0。 |
e | 科學數字 (Scientific)。傳入引數必須為浮點值,數值會被轉換成"-d.ddd...E+ddd"字串形式,產生的結果字串如果是負數則會有負號在前面,小數點前面一定會有一數字。 |
f | 固定數 (Fixed)。傳入引數必須為浮點值,數值會被轉換成"-ddd.ddd..."字串形式,產生的結果字串如果是負數則會有負號在前面。 |
g | 一般數字 (General)。傳入引數必須為浮點值,數值會被轉換成最短的可能字串 (引用固定數或科學數字格式), 精確度的指定格式會反應在產生的結果字串,產生的結果字串預設精確度到 15位。 |
n | 數字 (Number)。傳入引數必須為浮點值,數值會被轉換成"-d,ddd,ddd.ddd..."字串形式,"n"的格式相當於"f"格式,除非產生的結果字串含有上千個分隔符號。 |
m | 貨幣數字 (Money)。傳入引數必須為浮點值,數值會被轉換成貨幣金額的字串,它的轉換是使用系統預設格式,會因不同的操作系統而有所不同,如果字串內含精確度的指定格式,則數值會將系統預設的格式蓋過去。 |
s | 字串 (String)。傳入引數必須為字元或字串,產生結果字串的精確度會到指定的最大長度,如果傳入引數的字串長度超過最大長度,則字串會被截掉。 |
x | 十六進位數字 (Hexadecimal)。傳入引數必須為整數,數值會被轉換成16進位數字,如果字串內含精確度的指定格式,則產生結果字串至少必須包含指定精確度的位數,如果數值含較少位數,則產生的結果字串左邊會補 0。 |
注意:以上格式會隨系統的不同而稍有不同,例如:在中文操作系統上使用時,設定的格式會以中文顯示,而在英文操作系統上使用時,則設定的格式會以英文顯示。
Type 與 format (結合日期時間類與數字類的格式) 說明如下:
Type | format | 顯示說明 |
S | 字串 (String),此為預設格式。format省略。 | |
D | formatDt | 日期時間 (DateTime)。例如:'yy/mm/dd'。 |
N | formatNum | 數字 (Number)。例如:'%.4x'、'%d'、'%5.3f'等。 |
B | format | 邏輯 (Boolean)。例如:'Yes/No'、'是/否'、'作過/沒作過'等,如果是True則顯示Yes,、是、作過;如果是False則顯示No、否、沒作過。 |
C | 貨幣 (Currency)。format省略。 |
測試 Mail Merge 的主要步驟:
我們提供了 Mail Merge 的範例文件檔案 "MailSample1.txt" 供您編輯 Mail Merge 文件的參考。
注意:一旦您編輯的格式有錯誤,測試結果的檔案中 (如 "Result.txt") 會出現訊息如:Format '%.2g' invalid or incompatible with argument
以下為 "MailSample1.txt" 及 "Result.txt" 的範例內容:
[MailSample1.txt] From: you@#%domain#
To: #$EMail#
Subject: #%random,,,'%.4x'#測試郵件住址
MIME-Version: 1.0
Content-type: text/plain; charset=BIG5
Content-Transfer-Encoding: 8bit
您好:
您的會員資格將於#$到期日,d,'"西元"yyyy"年"mm"月"dd"日"'#到期
應繳納NT$#$欠款,C#的會費,
告訴您一個小秘密, 您的紅利積點是#$浮點數#, 最近#$邏輯,B,'已/未曾'#吃過麥當勞,
郵件住址是#$EMail#, 對不對?
如果錯誤的話, 請來信告知.
現在時間:#%now,'dd/mm/yyyy dddd am/pmhh:nn:ss'#[Result.txt] From: you@sparc4.cc.ncku.edu.tw
To: abc@sparc4.cc.ncku.edu.tw
Subject: 4FF72C18測試郵件住址
MIME-Version: 1.0
Content-type: text/plain; charset=BIG5
Content-Transfer-Encoding: 8bit
您好:
您的會員資格將於西元1999年01月13日到期
應繳納NT$530的會費,
告訴您一個小秘密, 您的紅利積點是68, 最近已吃過麥當勞,
郵件住址是chungho@sparc4.cc.ncku.edu.tw, 對不對?
如果錯誤的話, 請來信告知.
現在時間:15/01/1999 星期五 pm05:03:06
空白表示清除狀態
OK --
傳送成功,表示郵件伺服器沒有拒絕此收件者。
請注意,郵件伺服器接受此一收件者並不代表它就是正確的住址。
BH -- Bad Host,此時無法連接該郵件伺服器。
SE -- Sender error,郵件伺服器回應"送信者錯誤"。
DE -- Data error,郵件伺服器於傳送郵件資料時錯誤。
ER -- Error,郵件主機拒收此一收信人。