C#发邮件类-带附件功能
程序代码

//======================================================================
//
// 系统名称: 站内短信系统
// 命名空间名称: ST.SiteMessages
// 文件名: sm_Email.cs
// 创建者: 章 sontin[#]qq.com
// 创建时间: 2010-10-18 16:06:48
// 电子邮件:
// 备注:邮件发送类,使用是务必在web.config设置发送方属性节点
//
//======================================================================
using System;
using System.Net;
using System.Net.Mail;
using System.Configuration;
using System.Collections;
//using System.Net.Mime; //发送附件使用,MediaTypeNames对象
namespace ST.SiteMessages
{
/// <summary>
/// 功能:邮件发送类
/// 创建人: 章
/// 创建时间: 2010-10-18 16:13
/// 修改人:
/// 修改时间:
/// 修改内容:
/// </summary>
public class sm_Email
{
/// <summary>
/// 判断是否正确的邮箱格式
/// </summary>
/// <param name="str_Email">邮箱地址</param>
/// <returns>bool</returns>
public static bool IsEmail(string str_Email)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_Email, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
}
/// <summary>
/// 发送邮件,只发送一个邮箱。返回string[发送完成 或 错误信息]
/// </summary>
/// <param name="mailTo">收信人地址</param>
/// <param name="subject">邮件标题</param>
/// <param name="body">邮件内容</param>
/// <param name="bodyHTML">内容格式:false为Text,true为Html</param>
/// <param name="priority">优先级:0为低,1为中,2为高</param>
/// <returns>string</returns>
public static string SendEmail(string mailTo, string subject, string body, bool bodyHTML, int priority)
{
if (!IsEmail(mailTo))
{
return "邮箱地址格式不正确。";
}
ArrayList toEmail = new ArrayList();
toEmail.Add(mailTo);
return sm_Email.SendEmail(toEmail, subject, body, bodyHTML, priority);
}
/// <summary>
/// 发送邮件,同时发送多个邮箱。返回string[发送完成 或 错误信息]
/// </summary>
/// <param name="mailTo">收信人地址ArrayList数组</param>
/// <param name="subject">邮件标题</param>
/// <param name="body">邮件内容</param>
/// <param name="bodyHTML">内容格式:false为Text,true为Html</param>
/// <param name="priority">优先级:0为低,1为中,2为高</param>
/// <returns>string</returns>
public static string SendEmail(System.Collections.ArrayList mailTo, string subject, string body, bool bodyHTML, int priority)
{
string errEmail = "";
string smtp = ConfigurationManager.AppSettings["SM_Email_Smtp"].ToString(); //发信人所用邮箱的服务器
string mailUser = ConfigurationManager.AppSettings["SM_Email_UserName"].ToString(); //发件人的用户名
string mailPwd = ConfigurationManager.AppSettings["SM_Email_PassWord"].ToString(); //发件人的密码
string mailTrueName = ConfigurationManager.AppSettings["SM_Email_TrueName"].ToString(); //发件人的姓名
string mailForm = ConfigurationManager.AppSettings["SM_Email_FromAddress"].ToString(); //发件人的邮箱
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
foreach (object item in mailTo)
{
if (!IsEmail(item.ToString()))
{
errEmail += item.ToString() + "<br />";
}
else
{
msg.To.Add(item.ToString());
}
}
msg.From = new MailAddress(mailForm, mailTrueName, System.Text.Encoding.UTF8);
/* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
msg.Subject = subject;
msg.SubjectEncoding = System.Text.Encoding.UTF8;
msg.Body = body;
msg.BodyEncoding = System.Text.Encoding.UTF8;
msg.IsBodyHtml = bodyHTML; //是否是HTML邮件
//邮件优先级
if (priority == 0)
msg.Priority = MailPriority.Low;
else if (priority == 1)
msg.Priority = MailPriority.Normal;
else
msg.Priority = MailPriority.High;
//string file = @"E:\1.txt";
//Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
//msg.Attachments.Add(data);
//创建Smtp Mail对象
SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = false; //要在下一行之前,否则无法登录服务器
smtpClient.Credentials = new NetworkCredential(mailUser, mailPwd);
smtpClient.Port = 25;
smtpClient.Host = smtp;
smtpClient.EnableSsl = false;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; //指定如何处理待发的邮件
//smtpClient.SendCompleted += new SendCompletedEventHandler(SendMailCompleted);
try
{
//smtpClient.SendAsync(msg, msg);
smtpClient.Send(msg);
string rval = "发送完成";
if (errEmail != "")
rval += "<hr /><strong>以下邮箱地址格式有问题:</strong><br />" + errEmail;
return rval;
}
catch (SmtpException ex)
{
return ex.ToString();
}
}
#region ==异步方法==
//private static void SendMailCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
//{
// MailMessage mailMsg = (MailMessage)e.UserState;
// string subject = mailMsg.Subject;
// if (e.Cancelled) // 邮件被取消
// {
// return subject + " 被取消。";
// }
// if (e.Error != null)
// {
// return "错误:" + e.Error.ToString();
// }
// else
// {
// return "发送完成。[邮件已发出,请检查是否有退信。]";
// }
//}
#endregion
}
}
//
// 系统名称: 站内短信系统
// 命名空间名称: ST.SiteMessages
// 文件名: sm_Email.cs
// 创建者: 章 sontin[#]qq.com
// 创建时间: 2010-10-18 16:06:48
// 电子邮件:
// 备注:邮件发送类,使用是务必在web.config设置发送方属性节点
//
//======================================================================
using System;
using System.Net;
using System.Net.Mail;
using System.Configuration;
using System.Collections;
//using System.Net.Mime; //发送附件使用,MediaTypeNames对象
namespace ST.SiteMessages
{
/// <summary>
/// 功能:邮件发送类
/// 创建人: 章
/// 创建时间: 2010-10-18 16:13
/// 修改人:
/// 修改时间:
/// 修改内容:
/// </summary>
public class sm_Email
{
/// <summary>
/// 判断是否正确的邮箱格式
/// </summary>
/// <param name="str_Email">邮箱地址</param>
/// <returns>bool</returns>
public static bool IsEmail(string str_Email)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_Email, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
}
/// <summary>
/// 发送邮件,只发送一个邮箱。返回string[发送完成 或 错误信息]
/// </summary>
/// <param name="mailTo">收信人地址</param>
/// <param name="subject">邮件标题</param>
/// <param name="body">邮件内容</param>
/// <param name="bodyHTML">内容格式:false为Text,true为Html</param>
/// <param name="priority">优先级:0为低,1为中,2为高</param>
/// <returns>string</returns>
public static string SendEmail(string mailTo, string subject, string body, bool bodyHTML, int priority)
{
if (!IsEmail(mailTo))
{
return "邮箱地址格式不正确。";
}
ArrayList toEmail = new ArrayList();
toEmail.Add(mailTo);
return sm_Email.SendEmail(toEmail, subject, body, bodyHTML, priority);
}
/// <summary>
/// 发送邮件,同时发送多个邮箱。返回string[发送完成 或 错误信息]
/// </summary>
/// <param name="mailTo">收信人地址ArrayList数组</param>
/// <param name="subject">邮件标题</param>
/// <param name="body">邮件内容</param>
/// <param name="bodyHTML">内容格式:false为Text,true为Html</param>
/// <param name="priority">优先级:0为低,1为中,2为高</param>
/// <returns>string</returns>
public static string SendEmail(System.Collections.ArrayList mailTo, string subject, string body, bool bodyHTML, int priority)
{
string errEmail = "";
string smtp = ConfigurationManager.AppSettings["SM_Email_Smtp"].ToString(); //发信人所用邮箱的服务器
string mailUser = ConfigurationManager.AppSettings["SM_Email_UserName"].ToString(); //发件人的用户名
string mailPwd = ConfigurationManager.AppSettings["SM_Email_PassWord"].ToString(); //发件人的密码
string mailTrueName = ConfigurationManager.AppSettings["SM_Email_TrueName"].ToString(); //发件人的姓名
string mailForm = ConfigurationManager.AppSettings["SM_Email_FromAddress"].ToString(); //发件人的邮箱
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
foreach (object item in mailTo)
{
if (!IsEmail(item.ToString()))
{
errEmail += item.ToString() + "<br />";
}
else
{
msg.To.Add(item.ToString());
}
}
msg.From = new MailAddress(mailForm, mailTrueName, System.Text.Encoding.UTF8);
/* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
msg.Subject = subject;
msg.SubjectEncoding = System.Text.Encoding.UTF8;
msg.Body = body;
msg.BodyEncoding = System.Text.Encoding.UTF8;
msg.IsBodyHtml = bodyHTML; //是否是HTML邮件
//邮件优先级
if (priority == 0)
msg.Priority = MailPriority.Low;
else if (priority == 1)
msg.Priority = MailPriority.Normal;
else
msg.Priority = MailPriority.High;
//string file = @"E:\1.txt";
//Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
//msg.Attachments.Add(data);
//创建Smtp Mail对象
SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = false; //要在下一行之前,否则无法登录服务器
smtpClient.Credentials = new NetworkCredential(mailUser, mailPwd);
smtpClient.Port = 25;
smtpClient.Host = smtp;
smtpClient.EnableSsl = false;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; //指定如何处理待发的邮件
//smtpClient.SendCompleted += new SendCompletedEventHandler(SendMailCompleted);
try
{
//smtpClient.SendAsync(msg, msg);
smtpClient.Send(msg);
string rval = "发送完成";
if (errEmail != "")
rval += "<hr /><strong>以下邮箱地址格式有问题:</strong><br />" + errEmail;
return rval;
}
catch (SmtpException ex)
{
return ex.ToString();
}
}
#region ==异步方法==
//private static void SendMailCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
//{
// MailMessage mailMsg = (MailMessage)e.UserState;
// string subject = mailMsg.Subject;
// if (e.Cancelled) // 邮件被取消
// {
// return subject + " 被取消。";
// }
// if (e.Error != null)
// {
// return "错误:" + e.Error.ToString();
// }
// else
// {
// return "发送完成。[邮件已发出,请检查是否有退信。]";
// }
//}
#endregion
}
}