using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net.Mail;
using System.Net.Mime;
using System.Text;
namespace IntOA.Common
{
public class EmailSender
{
private MailMessage mMailMessage; //主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)
private SmtpClient mSmtpClient; //主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器、发送端口号、验证方式等等)
private bool mEnableSsl; //是否对邮件内容进行socket层加密传输
private bool mEnablePwdAuthentication; //是否对发件人邮箱进行密码验证
private static string _mSenderPort = null; //发送邮件所用的端口号(htmp协议默认为25)
public static string mSenderPort
{
get
{
if (_mSenderPort == null)
{
_mSenderPort = ConfigurationManager.AppSettings["mSenderPort"];
}
return _mSenderPort;
}
}
private static string _mSenderServerHost = null; //发件箱的邮件服务器地址(IP形式或字符串形式均可)
public static string mSenderServerHost
{
get
{
if (_mSenderServerHost == null)
{
_mSenderServerHost = ConfigurationManager.AppSettings["mSenderServerHost"];
}
return _mSenderServerHost;
}
}
private static string _mSenderMailAddress = null; //发送方的邮箱地址
public static string mSenderMailAddress
{
get
{
if (_mSenderMailAddress == null)
{
_mSenderMailAddress = ConfigurationManager.AppSettings["mSenderMailAddress"];
}
return _mSenderMailAddress;
}
}
private static string _mSenderPassword = null; //发件箱的密码
public static string mSenderPassword
{
get
{
if (_mSenderPassword == null)
{
_mSenderPassword = ConfigurationManager.AppSettings["mSenderPassword"];
}
return _mSenderPassword;
}
}
private static string _mSenderUsername = null; //发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)
public static string mSenderUsername
{
get
{
if (_mSenderUsername == null)
{
_mSenderUsername = ConfigurationManager.AppSettings["mSenderUsername"];
}
return _mSenderUsername;
}
}
///<summary>
/// 构造函数
///</summary>
///<param name="toMail">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>
///<param name="subject">邮件标题</param>
///<param name="emailBody">邮件内容(可以以html格式进行设计)</param>
///<param name="sslEnable">true表示对邮件内容进行socket层加密传输,false表示不加密</param>
///<param name="pwdCheckEnable">true表示对发件人邮箱进行密码验证,false表示不对发件人邮箱进行密码验证</param>
public EmailSender(string toMail, string subject, string emailBody, bool sslEnable, bool pwdCheckEnable)
{
try
{
mMailMessage = new MailMessage();
mMailMessage.To.Add(toMail);
mMailMessage.From = new MailAddress(mSenderMailAddress);
mMailMessage.Subject = subject;
mMailMessage.Body = emailBody;
mMailMessage.IsBodyHtml = true;
mMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
mMailMessage.Priority = MailPriority.Normal;
mEnableSsl = sslEnable;
mEnablePwdAuthentication = pwdCheckEnable;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="toMail">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>
/// <param name="subject">邮件标题</param>
/// <param name="emailBody">邮件内容(可以以html格式进行设计)</param>
public EmailSender(string toMail, string subject, string emailBody)
{
try
{
mMailMessage = new MailMessage();
mMailMessage.To.Add(toMail);
mMailMessage.From = new MailAddress(mSenderMailAddress);
mMailMessage.Subject = subject;
mMailMessage.Body = emailBody;
mMailMessage.IsBodyHtml = true;
mMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
mMailMessage.Priority = MailPriority.Normal;
mEnableSsl = false;
mEnablePwdAuthentication = false;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
///<summary>
/// 添加附件
///</summary>
///<param name="attachmentsPath">附件的路径集合,以分号分隔</param>
public void AddAttachments(string attachmentsPath)
{
try
{
string[] path = attachmentsPath.Split(';'); //以什么符号分隔可以自定义
Attachment data;
ContentDisposition disposition;
for (int i = 0; i < path.Length; i++)
{
data = new Attachment(path[i], MediaTypeNames.Application.Octet);
disposition = data.ContentDisposition;
disposition.CreationDate = File.GetCreationTime(path[i]);
disposition.ModificationDate = File.GetLastWriteTime(path[i]);
disposition.ReadDate = File.GetLastAccessTime(path[i]);
mMailMessage.Attachments.Add(data);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
///<summary>
/// 邮件的发送
///</summary>
public JsonResult Send()
{
JsonResult json = new JsonResult();
try
{
if (this.mMailMessage != null)
{
mSmtpClient = new SmtpClient();
mSmtpClient.Host = mSenderServerHost;
mSmtpClient.Port = Int32.Parse(mSenderPort);
mSmtpClient.UseDefaultCredentials = false;
mSmtpClient.EnableSsl = mEnableSsl;
if (mEnablePwdAuthentication)
{
System.Net.NetworkCredential nc = new System.Net.NetworkCredential(mSenderUsername, mSenderPassword);
mSmtpClient.Credentials = nc.GetCredential(mSmtpClient.Host, mSmtpClient.Port, "NTLM"); //NTLM: Secure Password Authentication in Microsoft Outlook Express
}
else
{
mSmtpClient.Credentials = new System.Net.NetworkCredential(mSenderUsername, mSenderPassword);
}
mSmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
mSmtpClient.Send(mMailMessage);
json.ResFlag = JsonResultEnum.Success;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
json.ResFlag = JsonResultEnum.Failed;
return json;
}
return json;
}
}
}
C# 邮件发送 实现类
最新推荐文章于 2024-04-20 21:15:00 发布