日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

邮件发送详解

發布時間:2024/6/21 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 邮件发送详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

電子郵件在Internet上發送和接收其實和我們日常生活中的郵寄服務一樣:當我們要寄一個包裹的時候,我們首先要找到一個有這項業務的郵局,在填寫完收件人姓名、地址等信息之后,包裹就寄到了收件人所在地的郵局,那么對方取包裹的時候就必須去這個郵局才能取出。同樣的,當我們發送電子郵件的時候,這封郵件是由郵件發送服務器(任何一個都可以)發出,并根據收信人的地址判斷對方的郵件接收服務器而將這封信發送到該服務器上,收信人要收取郵件也只能訪問這個服務器才能夠完成。

電子郵件工作原理

電子郵件的工作過程遵循客戶-服務器模式。每份電子郵件的發送都要涉及到發送方與接收方,發送方式構成客戶端,而接收方構成服務器,服務器含有眾多用戶的電子信箱。發送方通過郵件客戶程序,將編輯好的電子郵件向郵局服務器(SMTP服務器)發送。郵局服務器識別接收者的地址,并向管理該地址的郵件服務器(POP3服務器)發送消息。郵件服務器識將消息存放在接收者的電子信箱內,并告知接收者有新郵件到來。接收者通過郵件客戶程序連接到服務器后,就會看到服務器的通知,進而打開自己的電子信箱來查收郵件。
通常Internet上的個人用戶不能直接接收電子郵件,而是通過申請ISP(Internet Service Provider的縮寫,意為“Internet服務提供商”)主機的一個電子信箱,由ISP主機負責電子郵件的接收。一旦有用戶的電子郵件到來,ISP主機就將郵件移到用戶的電子信箱內,并通知用戶有新郵件。因此,當發送一條電子郵件給一另一個客戶時,電子郵件首先從用戶計算機發送到ISP主機,再到Internet,再到收件人的ISP主機,最后到收件人的個人計算機。
ISP主機起著“郵局”的作用,管理著眾多用戶的電子信箱。每個用戶的電子信箱實際上就是用戶所申請的帳號名。每個用戶的電子郵件信箱都要占用 ISP主機一定容量的硬盤空間,由于這一空間是有限的,因此用戶要定期查收和閱讀電子信箱中的郵件,以便騰出空間來接收新的郵件。

電子郵件在發送與接收過程中都要遵循SMTP、POP3等協議,這些協議確保了電子郵件在各種不同系統之間的傳輸。其中,SMTP負責電子郵件的發送,而POP3則用于接收Internet上的電子郵件。

最簡單的郵件發送流程如圖:

如果將這個網絡分的更細一點,其具體的流程圖如下:

當然在我們的實際的應用中,特別是架設比較龐大的郵件系統的時候,涉及的技術更多、更復雜,如果是多臺收件服務器、多臺發件服務器,就要再附加一臺服務器做負載均衡。里面還要涉及防火墻、垃圾過濾一些安全問題。盡管這些不是我們平時能夠的用的著的,但是了解這些還是必須的。


ASP.net發送郵件

電子郵件是最初的網絡通信技術,在信息技術高速發展的今天,電子郵件已經作為一種不可或缺的通信方式深入到了企業的各個層面。最常見的就是我們熟知的bug報告、密碼重置通知、申請確認等。特別是我們在從事企業軟件開發的時候,常常要用到電子郵件技術。

而微軟的ASP.NET很好的將其進行了封裝,使得發送電子郵件十分便捷。在.net框架1.x版本中ystem.Web.Mail已經實現了這一點。但是其通過的是第三方控件實現的,具體的代碼會在后面介紹。在后來的2.0版本已經將其很好的封裝在System.Net.Mail中,在這里面有最核心的兩個類,即MailMessage和SmtpClient。

· MailMessage:描述一個電子郵件消息;它擁有From,To,Subject,Body,Attachments等屬性;

· SmtpClient:把一個指定的MailMessage實例發送到一個指定的SMTP服務器。

我們只要將對象的屬性賦值,就能順利發送一封電子郵件了。流程圖如下:

注意:在郵件發送的過程中會產生異常,比較常見的就是SmtpException,所以發送一定要進行try,catch操作,捕捉可能出現的異常。


初始化MailMessage實例:

///<summary>
///郵件初始化
///為了簡單,自己發個自己
///</summary>
///<returns></returns>
publicMailMessageInitMail(stringAddress)
{
MailMessagemail=newMailMessage();
//發件人
mail.From=newMailAddress(Address);
//收件人
mail.To.Add(newMailAddress(Address));
//主題
mail.Subject="ASP.NETsendmailtesting!";
//內容
mail.Body="Welcometojoinus,letmeinstruducemyself!";
//郵件主題和正文編碼格式
mail.SubjectEncoding=System.Text.Encoding.UTF8;
mail.BodyEncoding=System.Text.Encoding.UTF8;
//郵件正文是Html編碼
mail.IsBodyHtml=true;
//優先級
mail.Priority=MailPriority.High;
//密件抄送收件人
mail.Bcc.Add(Address);
//抄送收件人
mail.CC.Add(Address);

//添加附件
mail.Attachments.Add(newAttachment("d:\\1.txt"));
mail.Attachments.Add(newAttachment("d:\\2.txt"));
mail.Attachments.Add(newAttachment("d:\\3.txt"));

returnmail;
}

發送Gmail郵件。端口號為25、587成功。


///<summary>
///發送Gmail
///</summary>
publicboolSendGmail()
{
SmtpClientclient=newSmtpClient();
client.Credentials=newSystem.Net.NetworkCredential("userName","password");
//上述寫你的GMail郵箱和密碼
client.Port=587;//Gmail使用的端口
client.Host="smtp.gmail.com";
client.EnableSsl=true;//經過ssl加密

try
{
client.Send(InitMail("userName@gmail.com"));
returntrue;
}
catch(System.Net.Mail.SmtpExceptionex)
{
returnfalse;
}
}

效果圖:

.net框架1.x版本中的發送電子郵件源碼


publicboolsendMail(stringsender,stringreceiver,stringtitle,stringcontent)
{
MailMessagemail=newMailMessage();
mail.From=sender;
mail.To=receiver;
mail.Body=content;
mail.Subject=title;

mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1);
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername","username");//發送方郵件帳戶
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword","passw");//發送方郵件密碼


try
{
SmtpMail.SmtpServer="smtp."+sender.Substring(sender.IndexOf("@")+1);
SmtpMail.Send(mail);
returntrue;
}
catch
{
returnfalse;
}
}

總結

以上是生活随笔為你收集整理的邮件发送详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。