方法一
System.Web.Mail名字空间下的SmtpMail.Send(MailMessage mail)静态方法
这种方法最为简单,是.NET1.1中常用的方法,一般的SMTP服务都能支持。
方法二
System.Net.Mail名字空间下的SmtpClient.Send(MailMesasge mail)实例方法
这是.NET2.0里推荐的方法,它更加灵活,但写起来复杂一点。像Gmail这样需要SSL安全连接认证的,方法一是不行的。
两种方法代码示例:
/// <summary>
/// Send e-mail hepler class
/// </summary>
public sealed class EmailHelper
{
public static void SendWebMail(IList<string> toList, IList<string> ccList,
string subject, string body)
{
System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage();
SmtpMail.SmtpServer = SystemConfig.SmtpServer;
if (toList==null || toList.Count ==0)
{
throw new ArgumentNullException("toList can be null or empty.");
}
StringBuilder sb = new StringBuilder();
foreach (string s in toList)
{
sb.Append(s);
sb.Append(";");
}
mail.To = sb.ToString();
sb.Remove(0, sb.Length);
if (ccList != null && ccList.Count != 0)
{
foreach (string s in ccList)
{
sb.Append(s);
sb.Append(";");
}
}
mail.Cc = sb.ToString();
//基本权限
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",
"1");
//用户名
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername",
SystemConfig.SenderUserId);
//密码
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword",
SystemConfig.SenderPassword);
mail.From = SystemConfig.SenderEmail;
mail.Subject = subject;
mail.BodyFormat = MailFormat.Html;
mail.Body = body;
SmtpMail.Send(mail);
}
public static void SendNetMail(IList<string> toList, IList<string> ccList,
string subject, string body)
{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
if (toList == null || toList.Count == 0)
{
throw new ArgumentNullException("toList can be null or empty.");
}
foreach (string s in toList)
{
mail.To.Add(s);
}
if (ccList!= null && ccList.Count != 0)
{
foreach (string s in ccList)
{
mail.CC.Add(s);
}
}
mail.From = new System.Net.Mail.MailAddress(SystemConfig.SenderEmail, SystemConfig.SenderUserId,Encoding.UTF8);
mail.Subject = subject;
mail.IsBodyHtml = true;
mail.Body = body;
SmtpClient client = new SmtpClient(SystemConfig.SmtpServer, SystemConfig.SmtpPort);
client.Credentials = new System.Net.NetworkCredential(SystemConfig.SenderUserId, SystemConfig.SenderPassword);
client.EnableSsl = SystemConfig.EnableSSL;
client.Send(mail);
}
}
/// Send e-mail hepler class
/// </summary>
public sealed class EmailHelper
{
public static void SendWebMail(IList<string> toList, IList<string> ccList,
string subject, string body)
{
System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage();
SmtpMail.SmtpServer = SystemConfig.SmtpServer;
if (toList==null || toList.Count ==0)
{
throw new ArgumentNullException("toList can be null or empty.");
}
StringBuilder sb = new StringBuilder();
foreach (string s in toList)
{
sb.Append(s);
sb.Append(";");
}
mail.To = sb.ToString();
sb.Remove(0, sb.Length);
if (ccList != null && ccList.Count != 0)
{
foreach (string s in ccList)
{
sb.Append(s);
sb.Append(";");
}
}
mail.Cc = sb.ToString();
//基本权限
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",
"1");
//用户名
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername",
SystemConfig.SenderUserId);
//密码
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword",
SystemConfig.SenderPassword);
mail.From = SystemConfig.SenderEmail;
mail.Subject = subject;
mail.BodyFormat = MailFormat.Html;
mail.Body = body;
SmtpMail.Send(mail);
}
public static void SendNetMail(IList<string> toList, IList<string> ccList,
string subject, string body)
{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
if (toList == null || toList.Count == 0)
{
throw new ArgumentNullException("toList can be null or empty.");
}
foreach (string s in toList)
{
mail.To.Add(s);
}
if (ccList!= null && ccList.Count != 0)
{
foreach (string s in ccList)
{
mail.CC.Add(s);
}
}
mail.From = new System.Net.Mail.MailAddress(SystemConfig.SenderEmail, SystemConfig.SenderUserId,Encoding.UTF8);
mail.Subject = subject;
mail.IsBodyHtml = true;
mail.Body = body;
SmtpClient client = new SmtpClient(SystemConfig.SmtpServer, SystemConfig.SmtpPort);
client.Credentials = new System.Net.NetworkCredential(SystemConfig.SenderUserId, SystemConfig.SenderPassword);
client.EnableSsl = SystemConfig.EnableSSL;
client.Send(mail);
}
}
// <summary>
/// Stores system config / paramerter / hardcoded values
/// </summary>
public sealed class SystemConfig
{
public static string SmtpServer
{
get
{
return ConfigurationManager.AppSettings["smtpServer"];
}
}
public static int SmtpPort
{
get
{
return int.Parse(ConfigurationManager.AppSettings["smtpPort"]);
}
}
public static string SenderEmail
{
get
{
return ConfigurationManager.AppSettings["senderEmail"];
}
}
public static string SenderUserId
{
get
{
return ConfigurationManager.AppSettings["senderUserId"];
}
}
public static string SenderPassword
{
get
{
return ConfigurationManager.AppSettings["senderPassword"];
}
}
public static bool EnableSSL
{
get
{
return bool.Parse(ConfigurationManager.AppSettings["EnableSSL"]);
}
}
}
/// Stores system config / paramerter / hardcoded values
/// </summary>
public sealed class SystemConfig
{
public static string SmtpServer
{
get
{
return ConfigurationManager.AppSettings["smtpServer"];
}
}
public static int SmtpPort
{
get
{
return int.Parse(ConfigurationManager.AppSettings["smtpPort"]);
}
}
public static string SenderEmail
{
get
{
return ConfigurationManager.AppSettings["senderEmail"];
}
}
public static string SenderUserId
{
get
{
return ConfigurationManager.AppSettings["senderUserId"];
}
}
public static string SenderPassword
{
get
{
return ConfigurationManager.AppSettings["senderPassword"];
}
}
public static bool EnableSSL
{
get
{
return bool.Parse(ConfigurationManager.AppSettings["EnableSSL"]);
}
}
}
web.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="pbcrm" connectionString="Server=192.168.2.58;Initial Catalog=P;User ID=sa;PassWord=" providerName="System.Data.SqlClient"/>
</connectionStrings>
<appSettings>
<add key="smtpServer" value="smtp.gmail.com"/>
<add key="smtpPort" value="587"/>
<add key="senderEmail" value="rockniu@gmail.com"/>
<add key="senderUserId" value="rockniu"/>
<add key="senderPassword" value="******"/>
<add key ="EnableSSL" value="true"/>
</appSettings>
</configuration>
<configuration>
<connectionStrings>
<add name="pbcrm" connectionString="Server=192.168.2.58;Initial Catalog=P;User ID=sa;PassWord=" providerName="System.Data.SqlClient"/>
</connectionStrings>
<appSettings>
<add key="smtpServer" value="smtp.gmail.com"/>
<add key="smtpPort" value="587"/>
<add key="senderEmail" value="rockniu@gmail.com"/>
<add key="senderUserId" value="rockniu"/>
<add key="senderPassword" value="******"/>
<add key ="EnableSSL" value="true"/>
</appSettings>
</configuration>
测试代码:
[TestFixture]
public class SendMailTest
{
List<string> _sendTo = new List<string>(10);
List<string> _copyTo = new List<string>(10);
public SendMailTest()
{
_sendTo.Add("rockniu@gmail.com");
_sendTo.Add("rockniu@yahoo.cn");
_copyTo.Add("rockniu@live.com");
_copyTo.Add("rockniu@hotmail.com");
}
[Test]
public void SendWebMail()
{
EmailHelper.SendWebMail(_sendTo, _copyTo, "Rock is coming", "rock123");
}
[Test]
public void SendNetMail()
{
EmailHelper.SendNetMail(_sendTo, _copyTo, "Rock is coming", "rock123");
}
}