您的位置:首页 > 编程语言 > C#

C# 使用JMail发送邮件

2012-01-08 19:33 573 查看
private string m_strMail_Server = ""; //邮件服务器

private string m_strMail_UserName = ""; //邮件服务器用户账号

private string m_strMail_Password = ""; //邮件服务器用户密码

public string SendMail()

{

string strSubject = "", strBody = ""; //主题和内容

string strAttachment = ""; //附件

string strSender = "", strSenderName = ""; //发件人账号, 发件人显示名称

string strReceiver = "", strCC = "", strBCC = ""; //收件人 抄送人 暗送人

try

{

#region JMail预设置

jmail.Message jm = new jmail.Message();

jm.MailServerUserName = m_strMail_UserName;

jm.MailServerPassWord = m_strMail_Password;

jm.Logging = true;

jm.Silent = true;

jm.Charset = "gb2312";

jm.Encoding = "base64";

jm.ContentTransferEncoding = "base64";

//jm.ContentType = "text/html"; 由于需要挂载附件,因此此处注释,否则附件将显示为乱码

#endregion

//获取待发邮件清单

DataSet ds = Mail_GetList();

#region Format

/*

* SENDER

* SENDER_NAME

* RECEIVER

* CC

* BCC

* SUBJECT

* HEADER

* CONTENT

* FOOTER

* ATTACHMENT

*/

#endregion

//有待发送的记录

if (ds != null && ds.Tables[0].Rows.Count > 0)

{

foreach (DataRow row in ds.Tables[0].Rows)

{

//取项值

strSender = row["SENDER"].ToString().Trim();

strSenderName = row["SENDER_NAME"].ToString().Trim();

strReceiver = row["RECEIVER"].ToString().Trim();

strCC = row["CC"].ToString().Trim();

strBCC = row["BCC"].ToString().Trim();

strSubject = row["SUBJECT"].ToString().Trim();

strBody = row["HEADER"].ToString().Trim() + row["CONTENT"].ToString().Trim() + row["FOOTER"].ToString().Trim();

strAttachment = row["ATTACHMENT"].ToString().Trim();

//邮件发送

try

{

#region 发送人

jm.From = strSender;

jm.FromName = strSenderName;

#endregion

#region 接收人,抄送,暗送

jm.Recipients.Clear();

//收件人

if (strReceiver.Trim() != "")

{

string[] strReceiverList = strReceiver.Trim().Trim(';').Trim().Split(';');

foreach (string strTempReceiver in strReceiverList)

{

jm.AddRecipient(strTempReceiver.Trim(), strTempReceiver, strTempReceiver);

}

}

//抄送

if (strCC.Trim() != "")

{

string[] strCCList = strCC.Trim().Trim(';').Trim().Split(';');

foreach (string strTempCC in strCCList)

{

jm.AddRecipientCC(strTempCC.Trim(), strTempCC, strTempCC);

}

}

//暗送

if (strBCC.Trim() != "")

{

string[] strBCCList = strBCC.Trim().Trim(';').Trim().Split(';');

foreach (string strTempBCC in strBCCList)

{

jm.AddRecipientBCC(strTempBCC.Trim(), strTempBCC);

}

}

#endregion

#region 邮件内容

jm.ClearAttachments();

jm.Subject = strSubject;

//HTML标记必须封闭

strBody = "<html>" + strBody + "</html>";

jm.HTMLBody = strBody;

//附件

if (strAttachment.Trim() != "")

{

string[] strAttachmentList = strAttachment.Trim().Trim('|').Trim().Split('|');

ArrayList strAttachmentListResult = new ArrayList();

#region 剔除无效、重复附件

foreach (string strTempAttachment in strAttachmentList)

{

//附件不为空 且 不重复

if (strTempAttachment.Trim() != "" && !strAttachmentListResult.Contains(strTempAttachment.ToUpper().Trim()))

{

strAttachmentListResult.Add(strTempAttachment.ToUpper().Trim());

}

}

#endregion

foreach (string strTempAttachment in strAttachmentListResult)

{

jm.AddAttachment(strTempAttachment.Trim(), true, "application/octet-stream");

}

}

#endregion

#region 发送

if (jm.Send(m_strMail_Server, false))

{

//成功

try

{

//LOG

}

catch { }

try

{

//发送成功

}

catch { }

}

else

{

//失败

try

{

//LOG

}

catch { }

try

{

//发送失败

}

catch { }

}

#endregion

}

catch (Exception ex) //发送邮件的异常

{

//失败

try

{

//LOG

}

catch { }

try

{

//发送失败

}

catch { }

}

}

}

//else

//{

// return "NONE:没有可发送的记录!";

//}

jm.Clear();

jm = null;

ds = null;

return "SUCCESS";

}

catch (Exception ex) //服务层面的异常

{

return "ERROR: Service -- " + ex.Message;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: