using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;
namespace Common.Helper
{
public class MailHelper
{
private static string MAIL_HOST = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["MailIP"]); //邮件发送服务器
private static string MAIL_FROM_PASSWORD = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SendMailPWD"]); //发送邮件账号密码
private static string MAIL_FROM_ADDRESS = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SendMailAddress"]); //发送邮件地址
private static string MAIL_FROM_DISPLAYNAME = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SendMailDisplayName"]);//发送邮件账号密码
/// <summary>
/// 发送电子邮件函数
/// </summary>
/// <param name="mailHost">电子邮件服务主机名称</param>
/// <param name="mailFrom">发送人地志</param>
/// <param name="mailFromPWD">发信人密码</param>
/// <param name="mailTo">收信人地址</param>
/// <param name="mailTitle">邮件标题</param>
/// <param name="mailContent">邮件内容</param>
/// <param name="isHtml">是否采用HTML编码</param>
/// <param name="files">附件</param>
/// <returns>操作结果</returns>
public static string SendMail(string mailHost, string mailFrom, string mailFromPWD, string mailTo, string mailTitle, string mailContent, bool isHtml, string[] files)
{
string logMsg = string.Empty;
logMsg = string.Format("发送邮件从{0}至:{1}, 邮件内容:{2}", mailFrom, mailTo, mailContent);
#region 发送电子邮件
//电子邮件附件
Attachment data = null;
//传送的电子邮件类
//MailMessage message = new MailMessage(mailFrom, mailTo);
MailMessage message = new MailMessage();
string[] mailToList = mailTo.Split(',');
foreach (string mailAddress in mailToList)
{
if (!string.IsNullOrEmpty(mailAddress.Trim()))
{
message.To.Add(mailTo);
}
}
message.From = new MailAddress(mailFrom, MAIL_FROM_DISPLAYNAME);
message.Subject = mailTitle; //设置标题
message.Body = mailContent; //设置内容
message.IsBodyHtml = isHtml; //是否采用HTML编码
message.Priority = MailPriority.Normal; //电子邮件的优先级别
message.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312"); //内容采用的编码方式
try
{
//添加附件
if (files != null && files.Length > 0)
{
for (int i = 0; i < files.Length; i++)
{
//实例话电子邮件附件,并设置类型
data = new Attachment(files[i], System.Net.Mime.MediaTypeNames.Application.Octet);
System.Net.Mime.ContentDisposition disposition = data.ContentDisposition; //实例邮件内容
disposition.CreationDate = System.IO.File.GetCreationTime(files[i]);//取得建档日期
disposition.ModificationDate = System.IO.File.GetLastWriteTime(files[i]);//取得附件修改日期
disposition.ReadDate = System.IO.File.GetLastAccessTime(files[i]); //取得读取日期
System.IO.FileInfo fi = new System.IO.FileInfo(files[i]);
disposition.FileName = fi.Name.ToString();//设定文件名称
message.Attachments.Add(data);//添加附件
}
}
SmtpClient client = new SmtpClient(); //实例从送电子邮件类
client.Host = mailHost; //设置电子邮件主机名称
client.Credentials = new NetworkCredential(mailFrom, mailFromPWD); //取得寄信人认证
//发送电子邮件
client.Send(message);
return "邮件发送成功";
}
catch (Exception Err)
{
//返回错误信息
return Err.Message;
}
finally
{
//销毁电子邮件附件
if (data != null)
{
data.Dispose();
}
//销毁传送的电子邮件实例
message.Dispose();
}
#endregion
}
/// <summary>
/// 发送电子邮件
/// </summary>
/// <param name="mailHost">电子邮件服务主机名称</param>
/// <param name="mailFrom">发送人地志</param>
/// <param name="mailFromPWD">发信人密码</param>
/// <param name="mailTo">收信人地址</param>
/// <param name="mailTitle">邮件标题</param>
/// <param name="mailContent">邮件内容</param>
/// <param name="isHtml">是否采用HTML编码</param>
/// <returns></returns>
public static string SendMail(string mailHost, string mailFrom, string mailFromPWD, string mailTo, string mailTitle, string mailContent, bool isHtml)
{
return SendMail(mailHost, mailFrom, mailFromPWD, mailTo, mailTitle, mailContent, isHtml, null);
}
/// <summary>
/// 发送电子邮件
/// </summary>
/// <param name="mailTo">收信人地址</param>
/// <param name="mailTitle">邮件标题</param>
/// <param name="mailContent">邮件内容</param>
/// <param name="isHtml">是否采用HTML编码</param>
/// <param name="files">附件</param>
/// <returns></returns>
public static string SendMail(string mailTo, string mailTitle, string mailContent, bool isHtml, string[] files)
{
return SendMail(MAIL_HOST, MAIL_FROM_ADDRESS, MAIL_FROM_PASSWORD, mailTo, mailTitle, mailContent, isHtml, files);
}
/// <summary>
/// 发送电子邮件
/// </summary>
/// <param name="mailTo">收信人地址</param>
/// <param name="mailTitle">邮件标题</param>
/// <param name="mailContent">邮件内容</param>
/// <param name="isHtml">是否采用HTML编码</param>
/// <returns></returns>
public static string SendMail(string mailTo, string mailTitle, string mailContent, bool isHtml)
{
return SendMail(MAIL_HOST, MAIL_FROM_ADDRESS, MAIL_FROM_PASSWORD, mailTo, mailTitle, mailContent, isHtml, null);
}
/// <summary>
/// 发送电子邮件
/// </summary>
/// <param name="mailTo">收信人地址</param>
/// <param name="mailTitle">邮件标题</param>
/// <param name="mailContent">邮件内容</param>
/// <returns></returns>
public static string SendMail(string mailTo, string mailTitle, string mailContent)
{
return SendMail(MAIL_HOST, MAIL_FROM_ADDRESS, MAIL_FROM_PASSWORD, mailTo, mailTitle, mailContent, false, null);
}
}
}