郵件發送一點心得
左直拳
搞了一下,郵件並沒有想象的那麼復雜。
我用的是IIS自帶的SMTP服務器。既可以采用命令訪問SMTP讓它生成郵件,然後發送;也可以自己按照一定的格式,生成郵件文件,丟到<C:\inetpub\mailroot\PickUp>目錄,勤勞的SMTP也會立即發送。
第一種,過程無非就是與SMTP建立一個連接,然後發送些命令,什麼“HELO”,什麼“DATA”之類,將內容傳給它,僅此而已。
值得一提的是,如果是批量發送,可以建立一次連接,然後重復這些命令,全部發完了再運行“QUIT”命令,然後再斷掉連接。
第二種,自己生成郵件。
格式如下:
Return-Path:<[email protected]>回車換行符(\r\n) 退回信箱
From:"test"<[email protected]>回車換行符 發送郵箱
To:<[email protected]>回車換行符 接收郵箱
Subject:=?GB2312?B? TUlNRdCt0unLtcP308q8/g==?= 回車換行符 郵件主題 。
其中,“gb2312”部分說明郵件主題的原始內容為gb2312編碼的字符文本,“B”部分說明對郵件主題的原始內容按照BASE64方式進行了編碼,“TUlNRdCt0unLtcP308q8/g==”為對郵件主題的原始內容進行了BASE64編碼後的結果。
X-Priority:Normal回車換行符
X-MSMail-Priority:Normal回車換行符
Importance:Normal回車換行符
X-Mailer:Huolx.Pubclass回車換行符
MIME-Version:1.0回車換行符
Content-Type:text/Html;charset="gb2312"回車換行符
Content-Transfer-Encoding:base64回車換行符
回車換行符
(進行了BASE64編碼後的正文內容)。其實不編碼也可以,直接寫正文都行。
C#裡進行BASE64編碼很簡單:
string _Base64Encode(string str)
{
byte[] barray;
barray = Encoding.Default.GetBytes(str);
return Convert.ToBase64String(barray);