C#でメール送信する関数(SMTP使用)

40810 ワード

C#の中でSMTPサーバーを通じてメールを送って、いくつかのよく使う関数
/*=============================================================
* Send Mail Helper
* Author : Danny,Li
* E-mail : [email protected]
* Edition: V-101014
*=============================================================
*/
using System;
using System.Collections.Generic;
using System.Text;

namespace IRCommon
{
public class MailHelper
{
#region web.config
//SMTP
public static string MailSmtpServer
{
get { return System.Configuration.ConfigurationManager.AppSettings["mailSmtpServer"]; }
}

//
public static string MailServerFrom
{
get { return System.Configuration.ConfigurationManager.AppSettings["MailServerFrom"]; }
}

//
public static string DebugMail
{
get
{
if (string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["debugMail"]))
return string.Empty;
else
return System.Configuration.ConfigurationManager.AppSettings["debugMail"];
}
}
#endregion

/// <summary>
///
/// </summary>
private MailHelper()
{
// TODO: Add constructor logic here
}

/// <summary>
/// SendNetMail( SMTP )( 、 、 ";" , ";")
/// </summary>
/// <param name="mailFrom"> </param>
/// <param name="mailTo"> ( ";" , ";")</param>
/// <param name="mailSubject"> </param>
/// <param name="mailBody"> </param>
/// <param name="mailAttch"> ( ";" , ";")</param>
/// <param name="mailCode"> ( )</param>
/// <param name="mailPriority"> </param>
/// <param name="mailCC"> ( ";" , ";")</param>
/// <param name="resultMessage"> </param>
public static void SendNetMail(string mailFrom, string mailTo, string mailSubject, string mailBody, string mailAttch, string mailCode, string mailPriority, string mailCC, out string resultMessage)
{
//
resultMessage = "";
//
if (string.IsNullOrEmpty(mailFrom) || string.IsNullOrEmpty(mailTo))
{
resultMessage
= "Please Fill Email Addresser Or Addressee . ";
return;
}

System.Net.Mail.MailMessage email
= new System.Net.Mail.MailMessage();
System.Net.Mail.MailAddress emailFrom
= new System.Net.Mail.MailAddress(mailFrom);
//
email.From = emailFrom;
//
if (string.IsNullOrEmpty(DebugMail))
{
string[] toUsers = mailTo.Split(';');
foreach (string to in toUsers)
email.To.Add(to);
}
else
{
email.To.Add(DebugMail);
mailSubject
+= "(MailTo " + mailTo + ")";
}
//
if (string.IsNullOrEmpty(DebugMail))
{
if (!string.IsNullOrEmpty(mailCC))
{
string[] ccUsers = mailCC.Split(';');
foreach (string cc in ccUsers)
email.CC.Add(cc);
}
}
else
{
if (!string.IsNullOrEmpty(mailCC))
mailSubject
+= "(MailCC " + mailCC + ")";
}
//
email.Subject = mailSubject;
//
email.Body = mailBody;
//
if (!string.IsNullOrEmpty(mailAttch))
{
string[] attachments = mailAttch.Split(';');
foreach (string file in attachments)
{
System.Net.Mail.Attachment attach
= new System.Net.Mail.Attachment(file, System.Net.Mime.MediaTypeNames.Application.Octet);
//
System.Net.Mime.ContentDisposition disposition = attach.ContentDisposition;
disposition.CreationDate
= System.IO.File.GetCreationTime(file);
disposition.ModificationDate
= System.IO.File.GetLastWriteTime(file);
disposition.ReadDate
= System.IO.File.GetLastAccessTime(file);
//
email.Attachments.Add(attach);
}
}
//
email.Priority = (mailPriority == "High") ? System.Net.Mail.MailPriority.High : System.Net.Mail.MailPriority.Normal;
//
email.BodyEncoding = System.Text.Encoding.UTF8;
email.IsBodyHtml
= true;
//SMTP
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(MailSmtpServer);

// (Credentials )
client.Credentials = new System.Net.NetworkCredential(mailFrom, mailCode);

// (Delivery , )
client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;

try
{
//
client.Send(email);
resultMessage
= "Your E-mail Send Success .";
}
catch (Exception ex)
{
resultMessage
= "Your E-mail Send Faile And Bring Error :" + ex.Message;
}
}

/// <summary>
/// SendNetMail( )( 、 、 ";" , ";")
/// web.config ( <system.web> ):
/// <system.net>
/// <mailSettings>
/// <smtp from="[email protected]">
/// <network host="smtp.163.com" password="a1984c11d13" userName="yangxiangwen789" />
/// </smtp>
/// </mailSettings>
/// </system.net>
/// </summary>
/// <param name="mailFrom"> </param>
/// <param name="mailTo"> ( ";" , ";")</param>
/// <param name="mailSubject"> </param>
/// <param name="mailBody"> </param>
/// <param name="mailAttch"> ( ";" , ";")</param>
/// <param name="mailPriority"> </param>
/// <param name="mailCC"> ( ";" , ";")</param>
/// <param name="resultMessage"> </param>
public static void SendNetMail(string mailFrom, string mailTo, string mailSubject, string mailBody, string mailAttch, string mailPriority, string mailCC, out string resultMessage)
{
//
resultMessage = "";
//
if (string.IsNullOrEmpty(mailFrom) || string.IsNullOrEmpty(mailTo))
{
resultMessage
= "Please Fill Email Addresser Or Addressee . ";
return;
}

System.Net.Mail.MailMessage email
= new System.Net.Mail.MailMessage();

//
email.From = new System.Net.Mail.MailAddress(mailFrom);
//
if (string.IsNullOrEmpty(DebugMail))
{
string[] toUsers = mailTo.Split(';');
foreach (string to in toUsers)
email.To.Add(to);
}
else
{
email.To.Add(DebugMail);
mailSubject
+= "(MailTo " + mailTo + ")";
}
//
if (string.IsNullOrEmpty(DebugMail))
{
if (!string.IsNullOrEmpty(mailCC))
{
string[] ccUsers = mailCC.Split(';');
foreach (string cc in ccUsers)
email.CC.Add(cc);
}
}
else
{
if (!string.IsNullOrEmpty(mailCC))
mailSubject
+= "(MailCC " + mailCC + ")";
}
//
email.Subject = mailSubject;
//
email.Body = mailBody;
//
email.Priority = (mailPriority == "High") ? System.Net.Mail.MailPriority.High : System.Net.Mail.MailPriority.Normal;
//
if (!string.IsNullOrEmpty(mailAttch))
{
string[] attachments = mailAttch.Split(';');
foreach (string file in attachments)
{
System.Net.Mail.Attachment attach
= new System.Net.Mail.Attachment(file, System.Net.Mime.MediaTypeNames.Application.Octet);
//
System.Net.Mime.ContentDisposition disposition = attach.ContentDisposition;
disposition.CreationDate
= System.IO.File.GetCreationTime(file);
disposition.ModificationDate
= System.IO.File.GetLastWriteTime(file);
disposition.ReadDate
= System.IO.File.GetLastAccessTime(file);
//
email.Attachments.Add(attach);
}
}
//
email.BodyEncoding = System.Text.Encoding.UTF8;
email.IsBodyHtml
= true;

System.Net.Mail.SmtpClient sc
= new System.Net.Mail.SmtpClient();
try
{
//
sc.Send(email);
resultMessage
= "Your E-mail Send Success .";
}
catch (Exception ex)
{
resultMessage
= "Your E-mail Send Faile And Bring Error :" + ex.Message;
}
}

}
}