1. 程式人生 > >C#實現對郵件的傳送

C#實現對郵件的傳送

 private static void Thread_Send()
        {
            try
            {
                // 獲取IP, 獲取城市地址
                string ip="", address = "";
                
                try
                {
                    ip = Net.GetIP();
                    if (!string.IsNullOrEmpty(ip))
                    {
                        address = NetWork.GetIPAddress(ip);
                    }
                }
                catch(Exception )
                { }
                 
                string senderServerIp = "smtp.163.com";
                string toMailAddress = "
[email protected]
"; string fromMailAddress = "[email protected]"; string subjectInfo = string.Format("{0}| {1}|{2}", m_subject, ip, address); string bodyInfo = m_content; string mailUsername = "ZZZZ"; string mailPassword = System.Text.Encoding.ASCII.GetString(Convert.FromBase64String("XXXXXXXXX==")); string mailPort = "25"; //25 string attachPath = null; // E:\\123123.txt; E:\\haha.pdf CMail email = new CMail(senderServerIp, toMailAddress, fromMailAddress, subjectInfo, bodyInfo, mailUsername, mailPassword, mailPort, false, false); email.AddAttachments(attachPath); email.Send(); } catch (Exception ex) { Log.Error("LibUpdateNotice Thread_Send Exception:" + ex.Message); } }

using LibCSharpTool.Tool.Tool;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Mail;
using System.Net.Mime;
using System.Text;

namespace LibUpdateNotice
{
    internal class CMail
    {
        private MailMessage mMailMessage;   //主要處理髮送郵件的內容(如:收發人地址、標題、主體、圖片等等)
        private SmtpClient mSmtpClient; //主要處理用smtp方式傳送此郵件的配置資訊(如:郵件伺服器、傳送埠號、驗證方式等等)
        private int mSenderPort;   //傳送郵件所用的埠號(htmp協議預設為25)
        private string mSenderServerHost;    //發件箱的郵件伺服器地址(IP形式或字串形式均可)
        private string mSenderPassword;    //發件箱的密碼
        private string mSenderUsername;   //發件箱的使用者名稱(即@符號前面的字串,例如:
[email protected]
,使用者名稱為:hello) private bool mEnableSsl; //是否對郵件內容進行socket層加密傳輸 private bool mEnablePwdAuthentication; //是否對發件人郵箱進行密碼驗證 ///<summary> /// 建構函式 ///</summary> ///<param name="server">發件箱的郵件伺服器地址</param> ///<param name="toMail">收件人地址(可以是多個收件人,程式中是以“;"進行區分的)</param> ///<param name="fromMail">發件人地址</param> ///<param name="subject">郵件標題</param> ///<param name="emailBody">郵件內容(可以以html格式進行設計)</param> ///<param name="username">發件箱的使用者名稱(即@符號前面的字串,例如:[email protected],使用者名稱為:hello)</param> ///<param name="password">發件人郵箱密碼</param> ///<param name="port">傳送郵件所用的埠號(htmp協議預設為25)</param> ///<param name="sslEnable">true表示對郵件內容進行socket層加密傳輸,false表示不加密</param> ///<param name="pwdCheckEnable">true表示對發件人郵箱進行密碼驗證,false表示不對發件人郵箱進行密碼驗證</param> public CMail(string server, string toMail, string fromMail, string subject, string emailBody, string username, string password, string port, bool sslEnable, bool pwdCheckEnable) { try { mMailMessage = new MailMessage(); mMailMessage.To.Add(toMail); mMailMessage.From = new MailAddress(fromMail); mMailMessage.Subject = subject; mMailMessage.Body = emailBody; mMailMessage.IsBodyHtml = false; mMailMessage.BodyEncoding = System.Text.Encoding.UTF8; mMailMessage.Priority = MailPriority.Normal; this.mSenderServerHost = server; this.mSenderUsername = username; this.mSenderPassword = password; this.mSenderPort = Convert.ToInt32(port); this.mEnableSsl = sslEnable; this.mEnablePwdAuthentication = pwdCheckEnable; } catch (Exception ex) { Log.Error("LibUpdateNotice CMail Exception:" + ex.Message); } } ///<summary> /// 新增附件 ///</summary> ///<param name="attachmentsPath">附件的路徑集合,以分號分隔</param> public void AddAttachments(string attachmentsPath) { try { if (string.IsNullOrEmpty(attachmentsPath)) { return; } 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) { Log.Error("LibUpdateNotice AddAttachments Exception:" + ex.Message); } } ///<summary> /// 郵件的傳送 ///</summary> public void Send() { try { if (mMailMessage != null) { mSmtpClient = new SmtpClient(); //mSmtpClient.Host = "smtp." + mMailMessage.From.Host; mSmtpClient.Host = this.mSenderServerHost; mSmtpClient.Port = this.mSenderPort; mSmtpClient.UseDefaultCredentials = false; mSmtpClient.EnableSsl = this.mEnableSsl; if (this.mEnablePwdAuthentication) { System.Net.NetworkCredential nc = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword); //mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword); //NTLM: Secure Password Authentication in Microsoft Outlook Express mSmtpClient.Credentials = nc.GetCredential(mSmtpClient.Host, mSmtpClient.Port, "NTLM"); } else { mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword); } mSmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; mSmtpClient.Timeout = 20000; mSmtpClient.Send(mMailMessage); } } catch (Exception ex) { Log.Error("LibUpdateNotice Send Exception:" + ex.Message); } } } }



相關推薦

C#實現郵件傳送

private static void Thread_Send() { try { // 獲取IP, 獲取城市地址 string ip="",

c++實現windwos 下socket 的封裝(實現封包及拆包處理)

nth word temp add ips object invalid protected 數據 SuperSocket.h #pragma once #include<string> #include<iostream> #include &

C#實現SMTP郵件發送程序實例

lin ice 效果 using exceptio length string false ack 通常來說郵件發送功能在網站應用程序中經常會用到,包括大家經常看到的博客,在添加評論後,系統會自動發送郵件通知到我郵箱的,把系統發送郵件的功能整理了下,本文展示了一個客戶端D

C#實現字符串進行大小寫切換的方法

lec 原創 nbsp bsp bds 通訊 解密 根據 小寫 本文實例講述了C#實現對字符串進行大小寫切換的方法。分享給大家供大家參考。具體實現方法如下: C#代碼如下: 代碼如下: public class Program { public static vo

C++實現數學基本運算表達式的解析

其中 計算過程 amp 結果 ket leetcode 基本 數學 們的 代碼地址如下:<br>http://www.demodashi.com/demo/11078.html 前段時間在LeetCode上刷題,遇到了很多涉及對字符串進行解析的題目。可能是出於這

PHPMailer實現PHP郵件傳送

1.首先是下載PHPMailer http://code.google.com/a/apache-extras.org/p/phpmailer/ 2.解壓 從中取出class.phpmailer.php 和 class.smtp.php 放到你的專案的資料夾,因為我

python3 實現qq郵件傳送

python實現qq郵件傳送功能 設定QQ郵箱:點選“設定”->“賬戶”     2. 點選“開啟”按鈕,開啟POP3/SMTP服務,根據提示完成開啟操作,開啟成功後,生成授權碼(授權碼用於第三方登入,簡單說就是用在你寫的python程式裡進

C++實現RTMP協議傳送H.264編碼及AAC編碼的音視訊直播

  RTMP(Real Time Messaging Protocol)是專門用來傳輸音視訊資料的流媒體協議,最初由Macromedia 公司建立,後來歸Adobe公司所有,是一種私有協議,主要用來聯絡Flash Player和RtmpServer,如FMS, Red5, 

C# 實現PPT編輯

C# Presentation 文字替換 我們可以通過插入佔位符的方式,使用新的字詞替換已有幻燈片裡的文字。 本文將詳細描述如何使用Spire.Presentation 來替換Prsentation 裡面的文字。 首先請看示例文件,我們接下來會使用 Spire.PPT 替換示例文件裡面的

C++實現RTMP協議傳送H.264編碼及AAC編碼的音視訊

作者HBStream   RTMP(Real Time Messaging Protocol)是專門用來傳輸音視訊資料的流媒體協議,最初由Macromedia 公司建立,後來歸Adobe公司所有,是一種私有協議,主要用來聯絡Flash Player和RtmpServer

C 實現XML檔案的基本操作(建立xml檔案,增 刪 改 查 xml節點資訊)

                XML:Extensible Markup Language(可擴充套件標記語言)的縮寫,是用來定義其它語言的一種元語言,其前身是SGML(Standard Generalized Markup Language,標準通用標記語言)。它沒有標籤集(tag set),也沒有語法規

C++實現 電子郵件客戶端程式(簡易版)

#Windows作業系統下 用命令列工具實現傳送郵件(程式設計前工作)   步驟:   1.telnet連線伺服器(以網易郵箱為例,埠號25)      2.返回220 說明連線成功   .   3.ehlo傳送使用者名稱(QQ郵箱使用者名稱預設是QQ號)     返回了一堆登入方式

Windows命令實現匿名郵件傳送

在日常工具開發中,經常會有傳送郵件的需求。在一些高階語言中,如Python,C#中,都有專門的郵件傳送模組,如Python 中的 smtplib 模組。那麼,一封郵件到底是如何傳送到一個特定的郵箱呢? 舉個例子:使用[email protected] 傳送一封

C# 帶附件郵件傳送(支援多附件)

工作需要用到了多附件傳送功能,現在貼出來,有需要的共享一下。 //帶附件傳送,支援多個附件        public bool sendMailFile(string from, string to, string subject, string body,string

C#實現陣列元素排序(冒泡法)

昨天學習瞭如何用Split方法對陣列進行處理,還學習瞭如何用Array.Sort()方法對陣列進行排序,今天來研究下冒泡演算法 冒泡演算法(Bubble Sort)先畫表來說明下: 比如說,我們有個八

C#實現SQLite資料庫的資料批量提交

遇到一個業務需求,需要定期對SQLite資料庫進行資料的批量更新,實現的是將Dictionary中的資料批量新增到資料庫,現將程式碼展示如下。 public void updateDataToDB(Dictionary<string, int> diction

c++實現windwos 下socket 的封裝(實現封包及拆包處理)--

SuperSocket.h #pragma once #include<string> #include<iostream> #include <WINSOCK2.H> #include "MyThread.h" #include "S

C#實現SQL資料庫中的表的查詢、新增、修改、刪除資料

經常用到的物件有:SqlConnection,SqlAdapter,SqlCommand、Dataset、DataGrid和DataReader等,以SqlConnection,SqlAdapter,SqlCommand、Dataset、DataGrid物件,操作SQL的例

ActiveMQ入門系列之應用:Springboot+ActiveMQ+JavaMail實現非同步郵件傳送

現在郵件傳送功能已經是幾乎每個系統或網址必備的功能了,從使用者註冊的確認到找回密碼再到訊息提醒,這些功能普遍的會用到郵件傳送功能。我們都買過火車票,買完後會有郵件提醒,有時候郵件並不是買完票立馬就能收到郵件通知,這個就用到了非同步郵件傳送。 那怎麼實現郵件的非同步傳送呢? 很顯然,引入MQ是一個不錯的選擇

Java實現QQ郵件傳送客戶端

目錄 一、前言:QQ郵件傳送程式 二、封裝SMTP操作 三、實現多執行緒接收 四、QQ郵件客戶端介面設計     1、連線按鈕     2、傳送按鈕  五、QQ郵件傳送效果演示 六、總結 一、前言:QQ郵件傳送程式 在上一篇《Java網路程式設計:實現QQ郵