1. 程式人生 > >c#之 簡單stmp/pop郵件服務(一)-------傳送郵件

c#之 簡單stmp/pop郵件服務(一)-------傳送郵件

大家好!

很高興和大家分享,郵件服務操作。我也是昨天剛剛學會的!呵呵,希望對大家有用。

c#的郵件服務,主要有兩種。

一種是利用JMail元件,進行收發。

另一種是利用vs自帶的stmp/pop3郵件服務,來實現。

我將要講解的是利用stmp/pop3郵件服務。原因無它。vs自己就有,無需安裝外掛之類。

首先,我們要新增stmp/pop3郵件服務類的名稱空間:

using System.Net.Mail;

接下來,我給出原始碼,並給出詳細註釋!是一個郵件傳送函式,已測試成功。

如果你只想用,而不想理解那麼多細節,那麼在最後面,我給出了一個比較精簡的傳送郵箱函式(點選此處連結),希望,對你有幫助!

 /// <summary>
        /// 郵件傳送
        /// </summary>
        /// <param name="strTo">收信物件郵箱</param>
        /// <param name="strSubject">郵件主題</param>
        /// <param name="strBody">郵件內容</param>
        public static bool SendEmail(string strTo, string strSubject, string strBody)
        {
           string strSmtpServer = "smtp.163.com"; //163郵件伺服器
            string strFrom = "*****@163.com"; //使用者郵箱
            string strFromPass = "****";//使用者密碼

            //string strSmtpServer = "smtp.qq.com"; //qq郵件伺服器
             //string strSmtpServer = "202.108.3.190"; //新浪郵件伺服器


            SmtpClient client = new SmtpClient(strSmtpServer);//建立郵箱伺服器物件           

            client.UseDefaultCredentials = false;//獲取或設定是否使用預設憑據訪問 Web 代理伺服器
            client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);//建立使用者物件
            client.DeliveryMethod = SmtpDeliveryMethod.Network;//投遞方式

            MailMessage message = new MailMessage();    //建立郵件物件
            message.From = new MailAddress(strFrom);    //發信人地址
            message.To.Add(strTo);                      //新增收信人地址
            message.Subject = strSubject;               //郵件主題
            message.Body = strBody;                     //郵件內容

//當然,你也把上面五條語句簡化為如下:

//MailMessage message = new MailMessage(strFrom, strto, strSubject, strBody);

            //新增附件,要注意的是,傳送附件可能會慢點,耐心等下!
            //Attachment attachment = new Attachment("e://a.xls");   //建立附件物件,括號內參數為要新增的附件所在的地址
           // message.Attachments.Add(attachment);                      //新增到郵件


            message.BodyEncoding = System.Text.Encoding.UTF8;//獲取或設定用於郵件正文的編碼

            message.IsBodyHtml = true;//取得或設定值,指出電子郵件的主體是否為 HTML
            if (!string.IsNullOrEmpty(strBody))//判斷郵件內容是否為空
            {
                try
                {
                    client.Send(message);//傳送

                    MessageBox.Show("傳送成功!");
                    return true;
                }
                catch(Exception ex)
                {
                    MessageBox.Show("傳送失敗:"+ex.Message);
                    return false;
                }
            }
            else
            {
                MessageBox.Show("不能傳送空資訊!");
                return false;
            }       

 }

這裡,再舉一個呼叫該函式的例子:

 SendEmail("*****@qq.com","測試", "傳送成功!");

這裡還要說明下郵件服務的一些細節,對於發郵件而言是stmp協議,而要接收郵件把stmp改成pop就可以,在以後的文章中,

將介紹到如何接收郵件:

1.qq郵箱

郵件伺服器:smtp.qq.com

但要注意一點,qq的stmp/pop3服務必須開啟才能連線,開啟方法詳見:

2.163郵箱

郵件伺服器:smtp.163.com

3.新浪郵箱

郵件伺服器:202.108.3.190

對於想設定為新浪郵箱的伺服器的朋友,有三點要注意下:

1.伺服器名設定不能用stmp.sina.com, 而是用它的ip地址,不信,你試試。

2.它的stmp/pos3功能要手動開啟,方法同qq一樣,這裡就不重複了。

3.它不能傳送qq郵件

下面是上面程式碼的精簡版:

/// <summary>
        /// 郵件傳送
        /// </summary>
        /// <param name="strTo">收信物件郵箱</param>
        /// <param name="strSubject">郵件主題</param>
        /// <param name="strBody">郵件內容</param>

 public static bool SendEmail2(string strto, string strSubject, string strBody)
        {
            string strSmtpServer = "smtp.163.com"; //163郵件伺服器
            string strFrom = "*******@163.com";
            string strFromPass = "*******";


            SmtpClient client = new SmtpClient(strSmtpServer);
            client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;

            MailMessage message = new MailMessage(strFrom, strto, strSubject, strBody);
         
            //新增附件,要注意的是,傳送附件可能會慢點,耐心等下!
            //Attachment attachment = new Attachment("e://a.xls");   //建立附件物件,括號內參數為要新增的附件所在的地址
            //message.Attachments.Add(attachment);                      //新增到郵件   
      
            try
                {
                    client.Send(message);
                      MessageBox.Show("傳送成功!");

                    return true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("傳送失敗:" + ex.Message);
                    return false;
                }
      
        }

講完了!

希望,對大家有用!

在後面,我將繼續和大家分享郵件的一些基本應用。

相關推薦

c# 簡單stmp/pop郵件服務-------傳送郵件

大家好! 很高興和大家分享,郵件服務操作。我也是昨天剛剛學會的!呵呵,希望對大家有用。 c#的郵件服務,主要有兩種。 一種是利用JMail元件,進行收發。 另一種是利用vs自帶的stmp/pop3郵件服務,來實現。 我將要講解的是利用stmp/pop3郵件服務。原因無它。vs

C基本數據類型

C 數據類型 我們今天來開始學習 C 語言了,那麽 C 語言是最基礎的語言,學好 C 語言有助於我們以後更好的學習其他語言。那麽今天我們就來了解下 C 語言中的數據類型。 那麽什麽是數據類型呢?我們可以這樣來理解:數據類型可以理解為固定內存大小的別名,它是創建變量的模子。

從零開始學C++虛擬函式與多型:虛擬函式表指標、虛解構函式、object slicing與虛擬函式、C++物件模型圖

#include <iostream>using namespace std;class CObject {public:     virtual void Serialize()     {         cout << "CObject::Serialize ..." <&

C#淺析面向物件程式設計思想

   縱觀MicroSoft公司的幾種主流語言,C是面向過程,VB既有面向過程也有面向物件的特性,而C#則是純粹的面向物件的程式語言。在UML的學習過程中,畫類圖、物件圖的時候面向物件的思想就已經用到了具體的學習中,而C#的學習過程中我們接著深入來學習這種思想,只不過這次是

Python:傳送郵件Python版

【前言】        之前在《Java基礎(八):傳送郵件》博文中實踐瞭如何利用Java程式去傳送郵件,最近自己用Python寫了幾個小程式;結合自己在工作中經常有在伺服器上發郵件的需求,Linux對Python的支援沒得說,於是自己通過在網上學習自己實踐寫了個傳送郵件的

socket實現的簡單的ftp服務

socket 中文 add blog style log 實現簡單 port 數據 用 socket實現簡單的ftp服務ex:服務端 1 import socket,os 2 server=socket.socket() 3 server.bind(("localh

C有符號與無符號

C語言 有符號數 無符號數 我們在 C 語言中經常會見到 unsigned 關鍵字,那麽這是什麽意思呢?在計算機內,數據類型分為有符號和無符號兩種類型。它的最高位用於標識數據的符號:如果最高位為 1,表明這個數為負數;如果是0的則表明這個數為正數。那麽我們就來做個試驗驗證下,代碼如

C單引號和雙引號十三

C語言 單引號 雙引號 在 C 語言中,我們會經常使用到單引號和雙引號。那麽單引號用來表示字符字面量,雙引號是用來表示字符串字面量。 'a' 表示字符字面量,在內存中占1個字節; 'a' + 1表示 'a' 的 ASCI

C語言你不得不知的陣列

1、強制型別轉換運算子:     (double)a --------------------(將a轉換為double型別)     (int)(x+y)-------------------(將x+y的值轉換為int型別)   &n

基於Visual C++Windows核心程式設計程式碼分析1實現裝置管理器列舉裝置

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

新人上手TensorFlow 簡單瞭解一下Batch Normalization BN

author: 張俊林 轉載自:http://blog.csdn.net/malefactor/article/details/51476961 Batch Normalization作為最近一年來DL的重要成果,已經廣泛被證明其有效性和重要性。目前幾乎已經成為DL的標配了,任何有志於

Unity3D 利用C#實現簡單的代理模式Delegate委託

Ref: http://www.cnblogs.com/shadow7/p/5892641.html 1、Delegate是什麼? Delegate中文翻譯為“委託”。 C#語言是支援代理的,

基於visual c++windows核心程式設計程式碼分析21獲取和設定環境變數

環境變數是一個具有特定名字的物件,它包含了一個或者多個應用程式所將使用到的資訊。例如path,當要求系統執行一個程式而沒有告訴它程式所在的完整路徑時,系統除了在當前目錄下面尋找此程式外,還應到path中指定的路徑去找。使用者通過設定環境變數,來更好的執行程序。 環境變數一

C++效能系列靜態程式碼檢查工具介紹

FxCop Integrator允許將獨立的FxCop(1.36或10.0)和Code Metrics PowerTool 10.0整合到VS2010中。 最新版本(2.0.0 RTW)包含以下新功能: 支援使用程式碼度量PowerTool的計算程式碼

James+Javamail構建郵件服務

10.1 Javamail常見問題 1、接收或傳送郵件時,提示如下報錯: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream at javax.mail.Session.loa

深入C/C++基於CheckStackVars的安全檢查VS2008

最近一直忙畢業的相關事情,加上工作,轉眼間,又到月底了,之前承諾的每月一篇博文,前幾天就一直在尋找到底要寫什麼,近兩天又突然發現有很多東西可以寫。本篇就先延續之前的一篇基於Cookie的安全檢查機制(深入C/C++之基於Cookie的安全檢查(VS2005))來介紹下另外一種

基於visual c++windows核心程式設計程式碼分析18遠端程式碼注入執行

我們進行系統級別的安全監控的時候,防範木馬的時候,經常需要進行遠端程式碼注入執行。執行步驟如下1. 提升程序許可權,如果許可權不夠的話,很容易造成 OpenProcess 失敗;2. 確定你的宿主程序,即你所要注入程式碼的程序,這個其實很好辦,你要是不想你的木馬或者病毒被別個

C#淺析面向物件程式設計思想

<pre name="code" class="csharp">//My concern is my chief concern.     俗話說:“龍生龍鳳生鳳,老鼠的兒子會打洞”,可見在生活中,這種面向物件的思想(既“繼承”)已經深入人心,這篇部落格,就

基於visual c++windows核心程式設計程式碼分析61打造自己的Windows輸入法

IMM(Input Method Manager)只在安裝了亞洲語言包之後才能使用。通過呼叫GetSystemMetrics(SM_IMMENABLED)知道IMM是否使能。一共由三部分組成:status window  輸入法狀態列   表示正在處於中文輸入狀態可以知道是什

James+Javamail構建郵件服務

Mailet API是一個用來建立郵件處理程式的簡單的API,它被配置在郵件伺服器端執行,分匹配器Matcher和Mailet的介面兩種,匹配器根據特定的條件匹配郵件訊息,並觸發相應的Mailet.   Mailet這個詞是跟Servlet相似,功能也相似,他們的共同之處都是在伺服器端觸發並執行,只是Serv