邮件发送一点心得
左直拳
搞了一下,邮件并没有想象的那么复杂。
我用的是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"回车换行符 邮件是HTML
Content-Transfer-Encoding:base64回车换行符 正文是BASE64编码
回车换行符(一定要有这一行,将设置与正文分开)
正文(进行了BASE64编码后的正文内容。其实不编码也可以,直接写正文都行。)
C#里进行BASE64编码很简单:
string _Base64Encode(string str)
{
byte[] barray;
barray = Encoding.Default.GetBytes(str);
return Convert.ToBase64String(barray);
}