jmail是一個(gè)第三方郵件操作組件,通常位于web服務(wù)器端,實(shí)現(xiàn)收郵件及發(fā)郵件功能(客戶端用Foxmail這類就很好了)??梢岳盟p松實(shí)現(xiàn)發(fā)郵件、抄送、密送、多發(fā)、日志記錄及收郵件功能。本章要講的,就是:發(fā)郵件、抄送、密送、多發(fā)、日志記錄。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using jmail;
using System.IO;
namespace JmailDemo
{
public class MailAPI
{
/// summary>
/// 郵件發(fā)送
/// /summary>
/// param name="zt">主題/param>
/// param name="zw">正文/param>
/// param name="getMail">收件人地址/param>
/// param name="fromMail">發(fā)件人地址,多個(gè)地址間用英文逗號(hào)或分號(hào)隔開/param>
/// param name="csMail">抄送人地址,多個(gè)地址間用英文逗號(hào)或分號(hào)隔開/param>
/// param name="msMail">密送人地址,多個(gè)地址間用英文逗號(hào)或分號(hào)隔開/param>
/// param name="fjMail">附件服務(wù)器目錄,多個(gè)服務(wù)器端目錄之間以英文逗號(hào)或分號(hào)隔開/param>
public void Send(string zt, string zw, string getMail, string fromMail, string csMail, string msMail, string fjMail)
{
jmail.Message jmessage = new Message();
//Jmail系統(tǒng)配置
jmessage.Charset = "GB2312";
jmessage.Encoding = "base64";
//配置郵件信息
jmessage.Subject = zt.Trim();//郵件主題
jmessage.HTMLBody = zw;//郵件正文
//配置收件人信息
string[] sj = getMail.Split(',', ';');
if (sj.Length > 1)
{
for (int i = 0; i sj.Length; i++)
{
jmessage.AddRecipient(sj[i], "", "");//收件人郵箱地址
}
}
else
{
jmessage.AddRecipient(sj[0], "", "");
}
//配置抄送人信息
string[] cs = csMail.Split(',', ';');
if (cs.Length > 1)
{
for (int i = 0; i cs.Length; i++)
{
jmessage.AddRecipientCC(cs[i]);
}
}
else
{
jmessage.AddRecipient(cs[0], "", "");
}
//配置密送人信息
string[] ms = msMail.Split(',', ';');
if (ms.Length > 1)
{
for (int i = 0; i ms.Length; i++)
{
jmessage.AddRecipientBCC(ms[i]);
}
}
else
{
jmessage.AddRecipient(ms[0], "", "");
}
//配置發(fā)件人信息
jmessage.ReplyTo = fromMail;//指定收件人回復(fù)的,所回復(fù)到的地址
jmessage.From = fromMail;//郵件發(fā)件人的郵箱地址
jmessage.FromName = "Test!";//郵件發(fā)件人顯示的姓名
jmessage.MailServerUserName = fromMail;//用戶名身份驗(yàn)證
jmessage.MailServerPassWord = "password";//發(fā)送郵件在服務(wù)器中的密碼
//配置附件
string[] fj = fjMail.Split(',', ';');
if (fj.Length > 1)
{
for (int i = 0; i fj.Length; i++)
{
jmessage.AddAttachment(fj[i],true,null);
}
}
else
{
jmessage.AddRecipient(sj[0], "", "");
}
//配置追加信息
jmessage.AppendHTML("a );
//發(fā)送郵件
for (int i = 0; i sj.Length; i++)
{
jmessage.Send("smtp.qq.com", false);//發(fā)送郵件服務(wù)器
}
//配置jmail日志
jmessage.Logging = true;
using (StreamWriter sw = new StreamWriter("E:\\log.txt", true))
{
sw.Write(jmessage.Log);
sw.Close();
}
jmessage.Close();//郵件發(fā)送完畢,關(guān)閉郵件發(fā)送狀態(tài)
}
}
}
2)配置jmail郵件日志 一定要寫到發(fā)送郵件的后面,且jmessage.Logging = true;和sw.Write(jmessage.Log);一定要同時(shí)使用;
4) 當(dāng)出報(bào)錯(cuò):the message was undeliverable.all servers failed to receive the message時(shí),原因?yàn)閟mtp服務(wù)器不支持,更換smtp服務(wù)器,以前用163的沒(méi)問(wèn)題,但現(xiàn)在用163的不行了。