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郵