C#實(shí)現(xiàn)SMTP郵件發(fā)送程序?qū)嵗?/h1>
更新時(shí)間:2014年10月10日 11:21:36 投稿:shichen2014
這篇文章主要介紹了C#實(shí)現(xiàn)SMTP郵件發(fā)送程序?qū)嵗?是一個(gè)非常常見的實(shí)用技巧,需要的朋友可以參考下
通常來說郵件發(fā)送功能在網(wǎng)站應(yīng)用程序中經(jīng)常會(huì)用到,包括大家經(jīng)??吹降牟┛?,在添加評(píng)論后,系統(tǒng)會(huì)自動(dòng)發(fā)送郵件通知到我郵箱的,把系統(tǒng)發(fā)送郵件的功能整理了下,本文展示了一個(gè)客戶端Demo,希望對(duì)有需要的朋友有所幫助。運(yùn)行效果如下圖所示:

核心代碼如下:
復(fù)制代碼 代碼如下:using System;
using System.Net;
using System.Net.Mail;
using System.Text;
namespace HC.Email
{
/// <summary>
/// 整站郵件服務(wù)類
/// </summary>
public class EmailService
{
/// <summary>
/// 發(fā)送郵件
/// </summary>
/// <param name="mailTo">收件人
/// <param name="subject">主題
/// <param name="body">內(nèi)容
/// <returns></returns>
public static bool Send(string mailTo, string subject, string body)
{
return Send(new[] {mailTo}, null, subject, body, true, null);
}
/// <summary>
/// 發(fā)送郵件
/// </summary>
/// <param name="mailTo">收件人
/// <param name="subject">主題
/// <param name="body">內(nèi)容
/// <returns></returns>
public static bool Send(string[] mailTo, string subject, string body)
{
return Send(mailTo, null, subject, body, true, null);
}
/// <summary>
/// 發(fā)送郵件
/// </summary>
/// <param name="mailTo">收件人
/// <param name="subject">主題
/// <param name="body">內(nèi)容
/// <param name="attachmentsPath">附件
/// <returns></returns>
public static bool Send(string[] mailTo, string subject, string body, string[] attachmentsPath)
{
return Send(mailTo, null, subject, body, true, attachmentsPath);
}
/// <summary>
/// 發(fā)送郵件
/// </summary>
/// <param name="mailTo">收件人
/// <param name="mailCcArray">抄送
/// <param name="subject">主題
/// <param name="body">內(nèi)容
/// <param name="isBodyHtml">是否Html
/// <param name="attachmentsPath">附件
/// <returns></returns>
public static bool Send(string[] mailTo, string[] mailCcArray, string subject,string body, bool isBodyHtml,
string[] attachmentsPath)
{
try
{
var config = ConfigHelper.GetConfig<emailconfig>();
if (string.IsNullOrEmpty(config.Host) ||string.IsNullOrEmpty(config.UserName) ||
string.IsNullOrEmpty(config.Port) ||string.IsNullOrEmpty(config.Password))
{
//todo:記錄日志
return false;
}
var @from = new MailAddress(config.MailFrom); //使用指定的郵件地址初始化MailAddress實(shí)例
var message = new MailMessage(); //初始化MailMessage實(shí)例
//向收件人地址集合添加郵件地址
if (mailTo != null)
{
foreach (string t in mailTo)
{
message.To.Add(t);
}
}
//向抄送收件人地址集合添加郵件地址
if (mailCcArray != null)
{
foreach (string t in mailCcArray)
{
message.CC.Add(t);
}
}
//發(fā)件人地址
message.From = @from;
//電子郵件的標(biāo)題
message.Subject = subject;
//電子郵件的主題內(nèi)容使用的編碼
message.SubjectEncoding = Encoding.UTF8;
//電子郵件正文
message.Body = body;
//電子郵件正文的編碼
message.BodyEncoding = Encoding.Default;
message.Priority = MailPriority.High;
message.IsBodyHtml = isBodyHtml;
//在有附件的情況下添加附件
if (attachmentsPath != null && attachmentsPath.Length > 0)
{
foreach (string path in attachmentsPath)
{
var attachFile = new Attachment(path);
message.Attachments.Add(attachFile);
}
}
try
{
var smtp = new SmtpClient
{
Credentials = new NetworkCredential(config.UserName, config.Password),
Host = config.Host,
Port = Convert.ToInt32(config.Port)
};
//將郵件發(fā)送到SMTP郵件服務(wù)器
smtp.Send(message);
//todo:記錄日志
return true;
}
catch (SmtpException ex)
{
//todo:記錄日志
return false;
}
}
catch (SmtpException ex)
{
//todo:記錄日志
return false;
}
}
}
}
完整實(shí)例代碼點(diǎn)擊此處本站下載。
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助
相關(guān)文章
-
winform攔截關(guān)閉按鈕觸發(fā)的事件示例
這篇文章主要介紹了c# winform攔截關(guān)閉按鈕觸發(fā)的事件示例,大家參考使用吧 2014-01-01
-
C#使用帶like的sql語句時(shí)防sql注入的方法
這篇文章主要介紹了C#使用帶like的sql語句時(shí)防sql注入的方法,采用了一個(gè)比較簡(jiǎn)單的字符串過濾方法就可以有效提高sql語句的安全性,防止sql注入,需要的朋友可以參考下 2014-09-09
-
C#面向?qū)ο缶幊讨幸蕾嚪崔D(zhuǎn)原則的示例詳解
在面向?qū)ο缶幊讨?,SOLID?是五個(gè)設(shè)計(jì)原則的首字母縮寫,旨在使軟件設(shè)計(jì)更易于理解、靈活和可維護(hù)。本文將通過實(shí)例詳細(xì)講講C#面向?qū)ο缶幊讨幸蕾嚪崔D(zhuǎn)原則,需要的可以參考一下 2022-07-07
-
WinForm實(shí)現(xiàn)移除控件某個(gè)事件的方法
這篇文章主要介紹了WinForm實(shí)現(xiàn)移除控件某個(gè)事件的方法,對(duì)C#初學(xué)者有一定的借鑒價(jià)值,需要的朋友可以參考下 2014-08-08
-
基于C#?實(shí)現(xiàn)?OPC?DA?Server的問題小結(jié)
這篇文章主要介紹了基于C#?實(shí)現(xiàn)?OPC?DA?Server的相關(guān)知識(shí),關(guān)于C#怎么編寫一個(gè)進(jìn)程外的DCOM組件,這里先不做介紹了,這里主要介紹下OPC?DA?Server?的第一個(gè)接口,感興趣的朋友跟隨小編一起看看吧 2024-04-04
-
C# TabControl手動(dòng)觸發(fā)DrawItem的實(shí)現(xiàn)
本文主要介紹了C# TabControl手動(dòng)觸發(fā)DrawItem的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧 2023-02-02
-
C# OCR實(shí)現(xiàn)文字識(shí)別功能
OCR,中文叫做光學(xué)字符識(shí)別。它是利用光學(xué)技術(shù)和計(jì)算機(jī)技術(shù)把印在或?qū)懺诩埳系奈淖肿x取出來,并轉(zhuǎn)換成一種計(jì)算機(jī)能夠接受、人又可以理解的格式。本文將利用OCR實(shí)現(xiàn)文字識(shí)別功能,感興趣的可以了解一下 2022-11-11
-
C#利用Task實(shí)現(xiàn)任務(wù)超時(shí)多任務(wù)一起執(zhí)行的方法
這篇文章主要給大家介紹了關(guān)于C#利用Task實(shí)現(xiàn)任務(wù)超時(shí),多任務(wù)一起執(zhí)行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來一起看看吧。 2017-12-12
最新評(píng)論
通常來說郵件發(fā)送功能在網(wǎng)站應(yīng)用程序中經(jīng)常會(huì)用到,包括大家經(jīng)??吹降牟┛?,在添加評(píng)論后,系統(tǒng)會(huì)自動(dòng)發(fā)送郵件通知到我郵箱的,把系統(tǒng)發(fā)送郵件的功能整理了下,本文展示了一個(gè)客戶端Demo,希望對(duì)有需要的朋友有所幫助。運(yùn)行效果如下圖所示:

核心代碼如下:
using System.Net;
using System.Net.Mail;
using System.Text;
namespace HC.Email
{
/// <summary>
/// 整站郵件服務(wù)類
/// </summary>
public class EmailService
{
/// <summary>
/// 發(fā)送郵件
/// </summary>
/// <param name="mailTo">收件人
/// <param name="subject">主題
/// <param name="body">內(nèi)容
/// <returns></returns>
public static bool Send(string mailTo, string subject, string body)
{
return Send(new[] {mailTo}, null, subject, body, true, null);
}
/// <summary>
/// 發(fā)送郵件
/// </summary>
/// <param name="mailTo">收件人
/// <param name="subject">主題
/// <param name="body">內(nèi)容
/// <returns></returns>
public static bool Send(string[] mailTo, string subject, string body)
{
return Send(mailTo, null, subject, body, true, null);
}
/// <summary>
/// 發(fā)送郵件
/// </summary>
/// <param name="mailTo">收件人
/// <param name="subject">主題
/// <param name="body">內(nèi)容
/// <param name="attachmentsPath">附件
/// <returns></returns>
public static bool Send(string[] mailTo, string subject, string body, string[] attachmentsPath)
{
return Send(mailTo, null, subject, body, true, attachmentsPath);
}
/// <summary>
/// 發(fā)送郵件
/// </summary>
/// <param name="mailTo">收件人
/// <param name="mailCcArray">抄送
/// <param name="subject">主題
/// <param name="body">內(nèi)容
/// <param name="isBodyHtml">是否Html
/// <param name="attachmentsPath">附件
/// <returns></returns>
public static bool Send(string[] mailTo, string[] mailCcArray, string subject,string body, bool isBodyHtml,
string[] attachmentsPath)
{
try
{
var config = ConfigHelper.GetConfig<emailconfig>();
if (string.IsNullOrEmpty(config.Host) ||string.IsNullOrEmpty(config.UserName) ||
string.IsNullOrEmpty(config.Port) ||string.IsNullOrEmpty(config.Password))
{
//todo:記錄日志
return false;
}
var @from = new MailAddress(config.MailFrom); //使用指定的郵件地址初始化MailAddress實(shí)例
var message = new MailMessage(); //初始化MailMessage實(shí)例
//向收件人地址集合添加郵件地址
if (mailTo != null)
{
foreach (string t in mailTo)
{
message.To.Add(t);
}
}
//向抄送收件人地址集合添加郵件地址
if (mailCcArray != null)
{
foreach (string t in mailCcArray)
{
message.CC.Add(t);
}
}
//發(fā)件人地址
message.From = @from;
//電子郵件的標(biāo)題
message.Subject = subject;
//電子郵件的主題內(nèi)容使用的編碼
message.SubjectEncoding = Encoding.UTF8;
//電子郵件正文
message.Body = body;
//電子郵件正文的編碼
message.BodyEncoding = Encoding.Default;
message.Priority = MailPriority.High;
message.IsBodyHtml = isBodyHtml;
//在有附件的情況下添加附件
if (attachmentsPath != null && attachmentsPath.Length > 0)
{
foreach (string path in attachmentsPath)
{
var attachFile = new Attachment(path);
message.Attachments.Add(attachFile);
}
}
try
{
var smtp = new SmtpClient
{
Credentials = new NetworkCredential(config.UserName, config.Password),
Host = config.Host,
Port = Convert.ToInt32(config.Port)
};
//將郵件發(fā)送到SMTP郵件服務(wù)器
smtp.Send(message);
//todo:記錄日志
return true;
}
catch (SmtpException ex)
{
//todo:記錄日志
return false;
}
}
catch (SmtpException ex)
{
//todo:記錄日志
return false;
}
}
}
}
完整實(shí)例代碼點(diǎn)擊此處本站下載。
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助
相關(guān)文章
winform攔截關(guān)閉按鈕觸發(fā)的事件示例
這篇文章主要介紹了c# winform攔截關(guān)閉按鈕觸發(fā)的事件示例,大家參考使用吧2014-01-01
C#使用帶like的sql語句時(shí)防sql注入的方法
這篇文章主要介紹了C#使用帶like的sql語句時(shí)防sql注入的方法,采用了一個(gè)比較簡(jiǎn)單的字符串過濾方法就可以有效提高sql語句的安全性,防止sql注入,需要的朋友可以參考下2014-09-09
C#面向?qū)ο缶幊讨幸蕾嚪崔D(zhuǎn)原則的示例詳解
在面向?qū)ο缶幊讨?,SOLID?是五個(gè)設(shè)計(jì)原則的首字母縮寫,旨在使軟件設(shè)計(jì)更易于理解、靈活和可維護(hù)。本文將通過實(shí)例詳細(xì)講講C#面向?qū)ο缶幊讨幸蕾嚪崔D(zhuǎn)原則,需要的可以參考一下2022-07-07
WinForm實(shí)現(xiàn)移除控件某個(gè)事件的方法
這篇文章主要介紹了WinForm實(shí)現(xiàn)移除控件某個(gè)事件的方法,對(duì)C#初學(xué)者有一定的借鑒價(jià)值,需要的朋友可以參考下2014-08-08
基于C#?實(shí)現(xiàn)?OPC?DA?Server的問題小結(jié)
這篇文章主要介紹了基于C#?實(shí)現(xiàn)?OPC?DA?Server的相關(guān)知識(shí),關(guān)于C#怎么編寫一個(gè)進(jìn)程外的DCOM組件,這里先不做介紹了,這里主要介紹下OPC?DA?Server?的第一個(gè)接口,感興趣的朋友跟隨小編一起看看吧2024-04-04
C# TabControl手動(dòng)觸發(fā)DrawItem的實(shí)現(xiàn)
本文主要介紹了C# TabControl手動(dòng)觸發(fā)DrawItem的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
C# OCR實(shí)現(xiàn)文字識(shí)別功能
OCR,中文叫做光學(xué)字符識(shí)別。它是利用光學(xué)技術(shù)和計(jì)算機(jī)技術(shù)把印在或?qū)懺诩埳系奈淖肿x取出來,并轉(zhuǎn)換成一種計(jì)算機(jī)能夠接受、人又可以理解的格式。本文將利用OCR實(shí)現(xiàn)文字識(shí)別功能,感興趣的可以了解一下2022-11-11
C#利用Task實(shí)現(xiàn)任務(wù)超時(shí)多任務(wù)一起執(zhí)行的方法
這篇文章主要給大家介紹了關(guān)于C#利用Task實(shí)現(xiàn)任務(wù)超時(shí),多任務(wù)一起執(zhí)行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來一起看看吧。2017-12-12

