1、配置文件
<?xml version="1.0"?>
<configuration>
<appSettings>
<!--1:是调试状态 0或者其他-->
<add key="DebugStatus" value="1"/>
<!--发送测试邮件接收地址 调试用-->
<add key="DebugEmail" value="autumn@cnblogs.com"/>
<!--是否写日志 0或者其他 否 1是 -->
<add key="IsWriteServiceLog" value="1" />
<!--是否写信息到日志 0或者其他 是 1否 -->
<add key="IsWriteInfoLog" value="0" />
<!--单位秒-->
<add key="Mail_TimerInterval" value="120" />
</appSettings>
<system.net>
<mailSettings>
<smtp from="XXXX邮件通知中心<域用户名@域名.com>" >
<network enableSsl="false" host="mail.域名.com" port="25" defaultCredentials="false" />
</smtp>
</mailSettings>
</system.net>
</configuration>
2、发送邮件类(MailSender)
public class MailCenter
{
#region 发送邮件
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="subject">主题</param>
/// <param name="emailBody">正文</param>
/// <param name="mailTo">邮件地址列表,以分号隔开</param>
public void SendMail(string subject, string emailBody, string mailTo)
{
try
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
System.Net.Configuration.MailSettingsSectionGroup settings = System.Net.Configuration.NetSectionGroup.GetSectionGroup(config).MailSettings;
System.Net.Configuration.SmtpSection smtpSection = System.Net.Configuration.NetSectionGroup.GetSectionGroup(config).MailSettings.Smtp;
System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient(settings.Smtp.Network.Host, settings.Smtp.Network.Port);
string[] address = mailTo.Split(new char[] { ‘;‘ });
System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage();
foreach (string item in address)
{
mm.To.Add(item);
}
mm.From = new System.Net.Mail.MailAddress(smtpSection.From);
mm.BodyEncoding = System.Text.Encoding.UTF8;
mm.SubjectEncoding = System.Text.Encoding.UTF8;
mm.IsBodyHtml = true;
mm.Body = emailBody;
mm.Subject = subject;
sc.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
sc.Send(mm);
}
catch (Exception ex)
{
WriteTextLog("发送邮件失败", ex.InnerException.Message.ToString(), DateTime.Now);
}
finally
{
}
}
#endregion
#region 写入日志到文本文件
/// <summary>
/// 写入日志到文本文件
/// </summary>
/// <param name="action">动作</param>
/// <param name="strMessage">日志内容</param>
/// <param name="time">时间</param>
public static void WriteTextLog(string action, string strMessage, DateTime time)
{
string IsWriteServiceLog = ConfigurationManager.AppSettings["IsWriteServiceLog"];
if (IsWriteServiceLog != "1")
return;
string path = AppDomain.CurrentDomain.BaseDirectory + @"\Log\";
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
string fileFullPath = path + time.ToString("yyyy-MM-dd") + ".System.txt";
StringBuilder str = new StringBuilder();
str.Append("Time: " + time.ToString() + "\r\n");
str.Append("Action: " + action + "\r\n");
str.Append("Message: " + strMessage + "\r\n");
str.Append("-----------------------------------------------------------\r\n\r\n");
StreamWriter sw;
if (!File.Exists(fileFullPath))
{
sw = File.CreateText(fileFullPath);
}
else
{
sw = File.AppendText(fileFullPath);
}
sw.WriteLine(str.ToString());
sw.Close();
}
#endregion
}
3、测试代码
#region 发送测试邮件
/// <summary>
/// 发送测试邮件
/// </summary>
public void SendTestEmail()
{
string debugEmail = "";
if (ConfigurationManager.AppSettings.AllKeys.Contains("DebugEmail"))
{
debugEmail = ConfigurationManager.AppSettings["DebugEmail"].ToString();
}
if (string.IsNullOrEmpty(debugEmail))
{
//如果配置文件中没有配置该节点
WriteTextLog("发送测试邮件失败!", "请检查配置项中[DebugEmail]是否配置", DateTime.Now);
return;
}
MailCenter mc = new MailCenter();
mc.SendMail("XXXX邮件通知中心发送的测试邮件" + DateTime.Now.ToString("yyyyMMddHHmmss"), "XXXX邮件通知中心发送的测试邮件:无正文", debugEmail);
}
#endregion
原文:http://www.cnblogs.com/autumn/p/5726297.html