最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C#編寫簡(jiǎn)單的圖形化的可發(fā)送附件的郵件客戶端程序

 更新時(shí)間:2016年02月01日 17:03:38   作者:鋒哥  
這篇文章主要介紹了使用C#編寫一個(gè)圖形化的可發(fā)送附件的郵件客戶端程序的方法,文中的示例同樣是基于支持smtp協(xié)議的郵件服務(wù)器,需要的朋友可以參考下

今天談一下C#(WinForm)如何發(fā)送帶附件的電子郵件!廢話少說(shuō),先截圖伺候:

201621170222646.jpg (896×532)

首先C#發(fā)送郵件需要smtp服務(wù)的支持,我也不知道是不是C#只支持smtp協(xié)議,不過(guò)好像在MSDN里,Mail這個(gè)命名空間下只有介紹smtp的方法的,好像沒(méi)看到POP的,算了,先不要說(shuō)這個(gè)

我們暫時(shí)用smtp協(xié)議來(lái)做就好了!因此首先你要確保你的發(fā)件郵箱支持smtp服務(wù),據(jù)我說(shuō)知,雅虎郵箱,HotMail郵箱和GMail郵箱都不支持smtp的,不過(guò)沒(méi)事,還好我們常用的QQ郵箱,163郵箱,新浪郵箱等郵箱都支持smtp的,這樣我們就可以用這些郵箱來(lái)發(fā)郵件了,哈哈,不過(guò)QQ郵箱的smtp服務(wù)默認(rèn)是關(guān)閉的,需要我們手動(dòng)去開(kāi)通,開(kāi)通很簡(jiǎn)單,進(jìn)入你的QQ郵箱后,選擇【設(shè)置】,在賬戶選項(xiàng)卡里就有個(gè)smtp的復(fù)選框,打個(gè)勾保存一下就OK了。163郵箱和新浪郵箱開(kāi)通smtp服務(wù)也差不多這樣的,很簡(jiǎn)單。好了 開(kāi)通好了接下來(lái)就開(kāi)始來(lái)講代碼了 OK!
為了方便菜鳥(niǎo)理解,我把整個(gè)程序分成一下幾部分:

  • smtp服務(wù)信息設(shè)置
  • 驗(yàn)證發(fā)件人信息
  • 添加附件
  • 正式發(fā)送郵件
  • 發(fā)送郵件后處理

OK 以下代碼伺候:
一些全局變量,都有注釋的

SmtpClient SmtpClient = null; //設(shè)置SMTP協(xié)議
MailAddress MailAddress_from = null; //設(shè)置發(fā)信人地址 當(dāng)然還需要密碼
MailAddress MailAddress_to = null; //設(shè)置收信人地址 不需要密碼
MailMessage MailMessage_Mai = null;
FileStream FileStream_my = null; //附件文件流

1.smtp服務(wù)信息設(shè)置

#region 設(shè)置Smtp服務(wù)器信息
/// <summary>
/// 設(shè)置Smtp服務(wù)器信息
/// </summary>
/// <param name="ServerName">SMTP服務(wù)名</param>
/// <param name="Port">端口號(hào)</param>
private void setSmtpClient(string ServerHost, int Port)
{
SmtpClient = new SmtpClient();
SmtpClient.Host = ServerHost;//指定SMTP服務(wù)名 例如QQ郵箱為 smtp.qq.com 新浪cn郵箱為 smtp.sina.cn等
SmtpClient.Port = Port; //指定端口號(hào)
SmtpClient.Timeout = 0; //超時(shí)時(shí)間
}
#endregion

2.驗(yàn)證發(fā)件人信息

#region 驗(yàn)證發(fā)件人信息
/// <summary>
/// 驗(yàn)證發(fā)件人信息
/// </summary>
/// <param name="MailAddress">發(fā)件郵箱地址</param>
/// <param name="MailPwd">郵箱密碼</param>
private void setAddressform(string MailAddress, string MailPwd)
{
//創(chuàng)建服務(wù)器認(rèn)證
NetworkCredential NetworkCredential_my = new NetworkCredential(MailAddress, MailPwd);
//實(shí)例化發(fā)件人地址
MailAddress_from = new System.Net.Mail.MailAddress(MailAddress, textBoxX4.Text);
//指定發(fā)件人信息 包括郵箱地址和郵箱密碼
SmtpClient.Credentials = new System.Net.NetworkCredential(MailAddress_from.Address, MailPwd);
;
}
#endregion

3.添加附件

#region 檢測(cè)附件大小
private bool Attachment_MaiInit(string path)
{
try
{
FileStream_my = new FileStream(path, FileMode.Open);
string name = FileStream_my.Name;
int size = (int)(FileStream_my.Length / 1024/1024);
FileStream_my.Close();
//控制文件大小不大于10M
if (size > 10)
{
MessageBox.Show("文件長(zhǎng)度不能大于10M!你選擇的文件大小為"+ size.ToString()+"M","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return false;
}
return true;
}
catch (IOException E)
{
MessageBox.Show(E.Message);
return false;
}
}

#endregion

4.正式發(fā)送郵件

 private void btnSend_Click(object sender, EventArgs e)
{
//檢測(cè)附件大小 發(fā)件必需小于10M 否則返回 不會(huì)執(zhí)行以下代碼
if (txt_Path.Text != "")
{
if (!Attachment_MaiInit(txt_Path.Text.Trim()))
{
return;
}
}
if (txt_SmtpServer.Text == "")
{
MessageBox.Show("請(qǐng)輸入SMTP服務(wù)器名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (textBoxX2.Text == "")
{
MessageBox.Show("請(qǐng)輸入發(fā)件人郵箱地址!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (txtformPwd.Text == "")
{
MessageBox.Show("請(qǐng)輸入發(fā)件人郵箱密碼!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (dataGridViewX1.Rows.Count == 0)
{
MessageBox.Show("請(qǐng)?zhí)砑邮占耍?, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (MessageBox.Show("您確定要發(fā)送當(dāng)前郵件嗎?", "詢問(wèn)", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
try
{
//初始化Smtp服務(wù)器信息
setSmtpClient("smtp." + txt_SmtpServer.Text.Trim() + comboBoxEx3.Text, Convert.ToInt32(numericUpDown1.Value));
}
catch (Exception Ex)
{
MessageBox.Show("郵件發(fā)送失敗,請(qǐng)確定SMTP服務(wù)名是否正確!" + "\n" + "技術(shù)信息:\n" + Ex.Message, "錯(cuò)誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
//驗(yàn)證發(fā)件郵箱地址和密碼
setAddressform(textBoxX2.Text.Trim() + comboBoxEx2.Text, txtformPwd.Text.Trim());
}
catch (Exception Ex)
{
MessageBox.Show("郵件發(fā)送失敗,請(qǐng)確定發(fā)件郵箱地址和密碼的正確性!" + "\n" + "技術(shù)信息:\n" + Ex.Message, "錯(cuò)誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
//清空歷史發(fā)送信息 以防發(fā)送時(shí)收件人收到的錯(cuò)誤信息(收件人列表會(huì)不斷重復(fù))
MailMessage_Mai.To.Clear();
//添加收件人郵箱地址
foreach (DataGridViewRow row in dataGridViewX1.Rows)
{
MailAddress_to = new MailAddress(row.Cells["Column1"].Value.ToString());
MailMessage_Mai.To.Add(MailAddress_to);
}
MessageBox.Show("收件人:" + dataGridViewX1.Rows.Count.ToString() + " 個(gè)");
//發(fā)件人郵箱
MailMessage_Mai.From = MailAddress_from;

//郵件主題
MailMessage_Mai.Subject = txttitle.Text;
MailMessage_Mai.SubjectEncoding = System.Text.Encoding.UTF8;

//郵件正文
MailMessage_Mai.Body = Rtb_Message.Text;
MailMessage_Mai.BodyEncoding = System.Text.Encoding.UTF8;

//清空歷史附件 以防附件重復(fù)發(fā)送
MailMessage_Mai.Attachments.Clear();

//添加附件
MailMessage_Mai.Attachments.Add(new Attachment(txt_Path.Text.Trim(), MediaTypeNames.Application.Octet));

//注冊(cè)郵件發(fā)送完畢后的處理事件
SmtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);

//開(kāi)始發(fā)送郵件
SmtpClient.SendAsync(MailMessage_Mai, "000000000");

}
}

5.發(fā)送郵件后處理

#region 發(fā)送郵件后所處理的函數(shù)
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
try
{
if (e.Cancelled)
{
MessageBox.Show("發(fā)送已取消!");
}
if (e.Error != null)
{
 
MessageBox.Show("郵件發(fā)送失?。? + "\n" + "技術(shù)信息:\n" + e.ToString(), "錯(cuò)誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
 
}
else
{
MessageBox.Show("郵件成功發(fā)出!", "恭喜!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception Ex)
{
MessageBox.Show("郵件發(fā)送失??!" + "\n" + "技術(shù)信息:\n" + Ex.Message, "錯(cuò)誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
 
}
#endregion

相關(guān)文章

  • C# 填充Excel圖表、圖例背景色的實(shí)例代碼

    C# 填充Excel圖表、圖例背景色的實(shí)例代碼

    下面的內(nèi)容將分別介紹通過(guò)C#來(lái)設(shè)置Excel中圖表背景色、以及圖表中的圖例背景色的方法,需要的朋友可以參考下
    2019-04-04
  • 一個(gè)狀態(tài)機(jī)的實(shí)現(xiàn)

    一個(gè)狀態(tài)機(jī)的實(shí)現(xiàn)

    本文主要介紹了C#實(shí)現(xiàn)一個(gè)狀態(tài)機(jī)的思路與方法,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • 淺析WPF中ToolTip工具提示的應(yīng)用

    淺析WPF中ToolTip工具提示的應(yīng)用

    在日常應(yīng)用中,當(dāng)鼠標(biāo)放置在某些控件上時(shí),都會(huì)有相應(yīng)的信息提示,從軟件易用性上來(lái)說(shuō),這是一個(gè)非常友好的功能設(shè)計(jì),本文就來(lái)和大家簡(jiǎn)單聊聊WPF中ToolTip工具提示的相關(guān)使用,有興趣的可以了解下
    2023-12-12
  • C#實(shí)現(xiàn)矩陣乘法實(shí)例分析

    C#實(shí)現(xiàn)矩陣乘法實(shí)例分析

    這篇文章主要介紹了C#實(shí)現(xiàn)矩陣乘法的方法,實(shí)例分析了通過(guò)C#數(shù)組構(gòu)造矩陣及實(shí)現(xiàn)矩陣乘法的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C#異步編程的三種模式

    C#異步編程的三種模式

    本文詳細(xì)講解了C#異步編程的三種模式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 基于C#中XmlWriter寫入Xml的深入分析

    基于C#中XmlWriter寫入Xml的深入分析

    本篇文章是對(duì)C#中XmlWriter寫入Xml進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Unity實(shí)現(xiàn)換裝系統(tǒng)

    Unity實(shí)現(xiàn)換裝系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)換裝系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 對(duì)C#中public、private、protect的區(qū)別說(shuō)明

    對(duì)C#中public、private、protect的區(qū)別說(shuō)明

    這篇文章主要介紹了對(duì)C#中public、private、protect的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • C#集合本質(zhì)之鏈表的用法詳解

    C#集合本質(zhì)之鏈表的用法詳解

    本文詳細(xì)講解了C#集合本質(zhì)之鏈表的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • C#使用移位運(yùn)算符獲取漢字編碼的示例代碼

    C#使用移位運(yùn)算符獲取漢字編碼的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C#如何使用移位運(yùn)算符獲取漢字編碼,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考下
    2024-01-01

最新評(píng)論

西乌珠穆沁旗| 涟水县| 济宁市| 施秉县| 滦南县| 苍溪县| 思茅市| 资兴市| 烟台市| 松原市| 米脂县| 台前县| 文安县| 汽车| 金沙县| 宁陵县| 玉环县| 板桥市| 方城县| 鄂托克前旗| 孟连| 通江县| 昌吉市| 登封市| 探索| 顺义区| 张家口市| 浏阳市| 图木舒克市| 德格县| 扎囊县| 揭西县| 尼玛县| 南岸区| 北宁市| 乌苏市| 微博| 沛县| 呼图壁县| 五寨县| 长寿区|