程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#郵件發送類,支持HTML格式,支持優先級設置

C#郵件發送類,支持HTML格式,支持優先級設置

編輯:關於C#
 

郵件發送類,支持HTML格式,支持優先級設置。通過SOCKET類實現的
using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

namespace Blood.Com.ClassLib
{
/// <summary>
/// TcpClient派生類,用來進行SMTP服務器的連接工作
/// </summary>
public class SMTPClient : TcpClient
{
public bool isConnected()
{
return Active;
}

public void SendCommandToServer(string Command)
{
NetworkStream ns = this.GetStream() ;
byte[] WriteBuffer ;
WriteBuffer = new byte[1024] ;
WriteBuffer = Encoding.Default.GetBytes(Command) ;
ns.Write(WriteBuffer,0,WriteBuffer.Length);
return ;
}
public string GetServerResponse()
{
int StreamSize ;
string ReturnValue = "" ;
byte[] ReadBuffer ;
NetworkStream ns = this.GetStream() ;
ReadBuffer = new byte[1024] ;
StreamSize = ns.Read(ReadBuffer,0,ReadBuffer.Length);
if (StreamSize==0)
{
return ReturnValue ;
}
else
{
ReturnValue = Encoding.Default.GetString(ReadBuffer);
return ReturnValue;
}
}

public bool DoesStringContainSMTPCode(string s,string SMTPCode)
{
return(s.IndexOf(SMTPCode,0,10)==-1)?false:true;
}

} //結束類

/// <summary>
/// 發送郵件類
/// </summary>
public class SMTPMail
{
/// <summary>
/// 錯誤反饋信息
/// </summary>
private string strErrMessage = null;

/// <summary>
/// SMTP服務器反饋的信息
/// </summary>
private string strResponse;

/// <summary>
/// 構造函數
/// </summary>
public SMTPMail()
{
strErrMessage = "";
strResponse = "";
}

/// <summary>
/// 取得錯誤反饋信息
/// </summary>
public string ErrorMessage
{
get
{
return strErrMessage ;
}
}

/// <summary>
/// 取得SMTP服務器反饋的信息
/// </summary>
public string ServerResponse
{
get
{
return strResponse;
}
}

/// <summary>
/// 郵件發送優先級
/// </summary>
public enum Prioritys
{
/// <summary>
/// 最高級別
/// </summary>
HIGH = 1,
/// <summary>
/// 默認級別
/// </summary>
NORMAL = 3,
/// <summary>
/// 最低級別
/// </summary>
LOW = 5
}

public void SendMail(string SmtpHost,int Port,string From,string DisplayFromName,string To,string DisplayToName,Prioritys Priority,bool Html,string Base,string Subject,string Message)
{
try
{
string strResponseNumber;
SMTPClient smtpcMail = new SMTPClient();
smtpcMail.Connect(SmtpHost,Port);
bool bolConnect = smtpcMail.isConnected();

//判斷是否進行了連接
if (!bolConnect)
{
strErrMessage = "Smtp服務器連接失敗...";
return;
}

//讀取反饋信息
strResponseNumber = smtpcMail.GetServerResponse();
if (smtpcMail.DoesStringContainSMTPCode(strResponseNumber,"220"))
{
this.strResponse += strResponseNumber;
}
else
{
this.strErrMessage = "連接失敗" + strResponseNumber;
return ;
}

string[] strSendBuffer = new string[6];
string[] strResponseCode = {"220","250","251","354","221"}; // success codes from SMTP server

string strData = "";
strData = string.Concat("HELO ",SmtpHost);
strData = string.Concat(strData,"/r/n");
strSendBuffer[0] = strData ;

strData = "";
strData = string.Concat("MAIL FROM: ","<" + From + ">");
strData = string.Concat(strData,"/r/n");
strSendBuffer[1] = strData;

strData = "";
strData = string.Concat("RCPT TO: ","<" + To + ">");
strData = string.Concat(strData,"/r/n");
strSendBuffer[2] = strData;

strData = "" ;
strData = string.Concat("DATA","/r/n");
strSendBuffer[3] = strData ;

strData = "" ;
strData = string.Concat("From: ",DisplayFromName + "<" + From + ">");
strData = string.Concat(strData,"/r/n" );
strData = string.Concat(strData,"To: " );
strData = string.Concat(strData,DisplayToName + "<" + To + ">");
strData = string.Concat(strData,"/r/n" );
strData = string.Concat(strData,"Subject: " );  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved