本篇內(nèi)容介紹了“.net jMail實(shí)現(xiàn)郵件發(fā)送功能代碼分享”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司專注于中大型企業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)和網(wǎng)站改版、網(wǎng)站營(yíng)銷(xiāo)服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開(kāi)發(fā)的融合,累計(jì)客戶成百上千,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對(duì)接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專注成都品牌網(wǎng)站建設(shè)和互聯(lián)網(wǎng)程序開(kāi)發(fā),在前進(jìn)的路上,與客戶一起成長(zhǎng)!一、組件準(zhǔn)備
下載JMail44_pro并安裝(記下安裝路徑)
找到安裝路徑,將其中的jmail.dll復(fù)制到項(xiàng)目中
二、核心發(fā)送代碼
新建MailAPI.cs,并輸入以下代碼
復(fù)制代碼 代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using jmail;
using System.IO;
namespace JmailDemo
{
public class MailAPI
{
///
/// 郵件發(fā)送
///
/// 主題
/// 正文
/// 收件人地址
/// 發(fā)件人地址,多個(gè)地址間用英文逗號(hào)或分號(hào)隔開(kāi)
/// 抄送人地址,多個(gè)地址間用英文逗號(hào)或分號(hào)隔開(kāi)
/// 密送人地址,多個(gè)地址間用英文逗號(hào)或分號(hào)隔開(kāi)
/// 附件服務(wù)器目錄,多個(gè)服務(wù)器端目錄之間以英文逗號(hào)或分號(hào)隔開(kāi)
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("此郵件發(fā)送者");
//發(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)
}
}
}
說(shuō)明:
1)在//配置收件人信息//配置抄送人信息//配置密送人信息//配置附件 這四處用if...else...是為解決單郵件發(fā)送和多郵件發(fā)送的問(wèn)題,設(shè)成**.length>0這個(gè)條件也行,但如果這樣做,比如:沒(méi)有抄送人時(shí),cs長(zhǎng)度為1,cs[0]是因?yàn)闆](méi)有這個(gè)郵箱地址才沒(méi)有發(fā)送出去;
2)配置jmail郵件日志 一定要寫(xiě)到發(fā)送郵件的后面,且jmessage.Logging = true;和sw.Write(jmessage.Log);一定要同時(shí)使用;
3) 日志記錄到文件 E:\\log.txt 中,要選存在,用log4net也行;
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的不行了。
三、調(diào)用發(fā)送代碼:
新建Mail.aspx,添加一個(gè)服務(wù)端按鈕,在其單擊事件中寫(xiě)以下代碼:
復(fù)制代碼 代碼如下:
protected void Button1_Click(object sender, EventArgs e)
{
MailAPI sendMail = new MailAPI();
string fj = Server.MapPath("files/JSON.rar");
//sendMail.Send("這是主題", "這是正文", "這是收件人郵箱列表", "這是發(fā)件人郵箱地址", "抄送人郵箱列表", "密件人郵箱列表", "附件服務(wù)器地址列表");
sendMail.Send("這是主題", "這是正文", "aaa@163.com,bbb@qq.com", "ccc@qq.com", "ddd@163.com,eee@qq.com", "", fj);
//各列表之間以 英文狀態(tài)的逗號(hào)分分號(hào)隔開(kāi)
}
“.net jMail實(shí)現(xiàn)郵件發(fā)送功能代碼分享”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!