天天看點

mymail伺服器資訊,.NET環境下五種不同的郵件發送解決方案

一起學習

1、使用outLook提供的發送

如:我見過的用友軟體U8生産制造(示範版),其中的郵件功能就是通過調用outLook的ActiveX 元件

優點:開發簡單

缺點:依賴outlook元件,SMTP 郵件服務

郵件發送的代碼如下:

以下是引用片段:Private Sub Send()

Dim outObj As New Outlook.Application()

Dim Item As Outlook.MailItemClass

Item = outObj.CreateItem(0)

Item.To = "[email protected] "

Item.Subject = "hello"

Item.Body = "hell"

Item.Attachments.Add("C:abc.txt")

Item.Send()

End Sub  2、WEB開發,在ASP.Net中引用System.Web.Mail類

System.Web.Mail 命名空間包含使您可以使用 CDOSYS(Windows 2000 的協作資料對象)消息元件來構造和發送消息的類。郵件消息是通過内置在 Microsoft Windows 2000 中的 SMTP 郵件服務或任意的 SMTP 伺服器來傳送的。此命名空間中的類可以在 ASP.Net 或任何托管應用程式

MailAttachment提供用于構造電子郵件附件的屬性和方法。

MailMessage提供用于構造電子郵件的屬性和方法。

SmtpMail提供用于使用 Windows 2000 的協作資料對象 (CDOSYS) 消息元件來發送消息的屬性和方法。

郵件可以通過 Microsoft Windows 2000 中内置的 SMTP 郵件服務或任意 SMTP 伺服器來傳送。System.Web.Mail 命名空間中的類型可以在 ASP.Net 或任何托管應用程式使用。

Smtp伺服器的設定,現在一些免費郵件提供商是不再提供針對所有郵件提供Smtp服務,在發送郵件的時候,需要驗證使用者資訊,考慮Smtp使用者驗證問題 如果Smtp伺服器在本地計算機,發送速度很快的,基本上不用擔心,如果不是本地伺服器,那麼發送的時候最好不要以此太多,一是速度問題,二是以此發送太多郵件,Smtp伺服器可能認為是垃圾郵件而拒絕服務

代碼如下:

以下是引用片段:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim mailObj As New MailMessage()

Dim smtp As SmtpMail

'定義SMTP伺服器的名稱

smtp.SmtpServer = "smtp.XXX.com"

'定義郵件的發送位址

mailObj.From = "[email protected]"

'定義郵件的接收位址

mailObj.To = " [email protected]"

'定義郵件的暗送位址

mailObj.Bcc= "[email protected]"

'定義郵件的抄送位址

mailObj.Cc = "[email protected]"

'定義郵件的主題

mailObj.Subject = "主題"

'定義郵件的主體

mailObj.Body = "郵件主體!"

'郵件以 HTML的格式發送

mailObj.BodyFormat = MailFormat.Html

'定義郵件的有限級,在此設定為高

mailObj.Priority = MailPriority.High

'給發送的郵件附加上一個附件

mailObj.Attachments.Add(New MailAttachment("c:aa.doc"))

smTp.Send(mailObj)

End Sub

3、在VB.Net或C#開發Windows 應用程式中使用System.Net.Sockets

也是基于SMTP協定  一、SMTP協定簡介

1、 用戶端通過伺服器的25端口建立TCP/IP連接配接

伺服器端: 220 server.com Simple Mail Transfer Service Ready

2、 用戶端使用“HELO”指令辨別發件人

用戶端:HELO server.com

伺服器端:250 server.com

3、 用戶端發送MAIL指令,伺服器端以OK作為響應表明準備接收

用戶端: MAIL FROM: 〈[email protected]〉

伺服器端: 250 OK

4、 用戶端發送RCPT指令辨別收件人,伺服器端回應是否願意為收件人接受郵件 伺服器端:250 OK

5、 協商結束後用指令DATA發送發送郵件

用戶端:DATA

伺服器端:354 Start mail input: end with 〈CRLF〉.〈CRLF〉

6、 用戶端以.表示結束輸入内容一起發送出去

用戶端:Subject: 〈CRLF〉

内容〈CRLF〉

.〈CRLF〉

7、用戶端用QUIT指令退出。

用戶端:QUIT

伺服器端:250 server.com closing transmission channel

優點:可以在此基礎上開發出自己的元件,利用Sockets我們可以進行網絡程式設計開發

缺點:程式量相對較多,

發送郵件的代碼如下:

以下是引用片段:

Dim sendData As String

Dim szData As Byte()

Dim CRLF As String

CRLF = "rn"

'建立與伺服器25端口的連接配接

Dim SmtpServ As New TcpClient(txtsmtp.Text, 25)

lstlog.Items.Clear()

'顯示伺服器初始資訊

Dim.NetStrm As.NetworkStream

.NetStrm = SmtpServ.GetStream()

Dim RdStrm As New StreamReader(SmtpServ.GetStream())

If RdStrm.ReadLine() 〈〉 "" Then lstlog.Items.Add(RdStrm.ReadLine())

'

sendData = "HELO server " CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'标志發件人

sendData = "MAIL FROM: " "〈" txtfrom.Text "〉" CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'标志收件人

sendData = "RCPT TO: " "〈" txtTo.Text "〉" CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'準備發送内容

sendData = "DATA " CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'發送主題

sendData = "SUBJECT: " txtsub.Text CRLF

'發送内容

sendData = sendData txtmsg.Text CRLF

'結束發送

sendData = sendData "." CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'退出

sendData = "QUIT " CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'關閉連接配接

.NetStrm.Close()

RdStrm.Close()

lstlog.Items.Add("連接配接關閉")

lstlog.Items.Add("發送成功")大家還可以參考:使用C# 建立郵件發送元件(SMTP)

4、IIS SMTP自帶的基本的發信元件CDONTS

你不必專門下載下傳,微軟已經提供了這個元件,隻要安裝了2000,NT的SMTP就會有的。

優點:元件由作業系統自帶

缺點:功能比較差,可擴充性不強Mymail = CreateObject("CDONTS.NewMail")

Mymail.From = *** '信件發送者信箱

Mymail.To = *** ‘信件接收者信箱

Mymail.CC = *** '抄送

Mymail.BCC = *** ’密件發送

Mymail.Subject = *** ‘信件主題

Mymail.Body = *** ’信件正文

'設定優先級,0-不重要,1-一般,2-重要。

Mymail.Importance = 2

Mymail.Send()

Mymail = Nothing  5、使用JMail元件

Jmail具有以下特點:

(1)可以發送附件;

(2)詳細日志能力,便于你檢視問題所在;

(3)設定郵件發送的優先級;

(4)支援多種格式的郵件發送,比如說以HTML或者TXT的方式發送郵件。這是個免費的元件。

(5)密件發送/(CC)抄送/緊急信件發送能力;

(6)最關鍵的就是--免費的元件,不必發錢,是以非常值得使用。

網站:目前版本是4.3

JMail元件的常用屬性:Body   郵件正文

Logging   調用Log記錄,供Debug用

Priority   郵件的優先程度,從1到5

Sender   發件人

ServerAddress   SMTP伺服器的IP位址或名稱

Subject   郵件标題

JMail元件的常用方法:

AddAttachment   指定附件檔案

AddRecipient   加入一個收件人

AddRecipientBCC   隐藏的副本抄送,隻有發件人和BCC收件人知道。

AddRecipientCC   副本抄送

Execute   送出郵件

了解必要的屬性及方法後,餘下的部分接收使用者輸入的Email,當成參數傳給AddRecipient方法,然後根據需要填上其餘屬性,最後以Execute方法寄出。例如:

以下是引用片段:

Dim JMail

JMail = Server.CreateObject("JMail.SMTPMail")

JMail.Logging = True

JMail.ServerAddress = "202.96.144.48"

JMail.Sender = "[email protected]"

JMail.Subject = "subject."

JMail.Body = "body."

JMail.AddRecipient("[email protected]")

JMail.AddAttachment("c:go.gif")

JMail.Priority = 3

JMail.Execute()

JMail = Nothing

總結:選擇何種方案,視程式的用途和需求而定,本文例出的幾種方案,供大家參考。例如用友軟體U8,調用outlook元件,一樣整合到自己的軟體中。我編寫的管理系統,自己寫元件(SMTP),功能同樣強大,不過Coding的時間就長了!

1、使用outLook提供的發送

如:我見過的用友軟體U8生産制造(示範版),其中的郵件功能就是通過調用outLook的ActiveX 元件

優點:開發簡單

缺點:依賴outlook元件,SMTP 郵件服務

郵件發送的代碼如下:

以下是引用片段:Private Sub Send()

Dim outObj As New Outlook.Application()

Dim Item As Outlook.MailItemClass

Item = outObj.CreateItem(0)

Item.To = "[email protected] "

Item.Subject = "hello"

Item.Body = "hell"

Item.Attachments.Add("C:abc.txt")

Item.Send()

End Sub  2、WEB開發,在ASP.Net中引用System.Web.Mail類

System.Web.Mail 命名空間包含使您可以使用 CDOSYS(Windows 2000 的協作資料對象)消息元件來構造和發送消息的類。郵件消息是通過内置在 Microsoft Windows 2000 中的 SMTP 郵件服務或任意的 SMTP 伺服器來傳送的。此命名空間中的類可以在 ASP.Net 或任何托管應用程式

MailAttachment提供用于構造電子郵件附件的屬性和方法。

MailMessage提供用于構造電子郵件的屬性和方法。

SmtpMail提供用于使用 Windows 2000 的協作資料對象 (CDOSYS) 消息元件來發送消息的屬性和方法。

郵件可以通過 Microsoft Windows 2000 中内置的 SMTP 郵件服務或任意 SMTP 伺服器來傳送。System.Web.Mail 命名空間中的類型可以在 ASP.Net 或任何托管應用程式使用。

Smtp伺服器的設定,現在一些免費郵件提供商是不再提供針對所有郵件提供Smtp服務,在發送郵件的時候,需要驗證使用者資訊,考慮Smtp使用者驗證問題 如果Smtp伺服器在本地計算機,發送速度很快的,基本上不用擔心,如果不是本地伺服器,那麼發送的時候最好不要以此太多,一是速度問題,二是以此發送太多郵件,Smtp伺服器可能認為是垃圾郵件而拒絕服務

代碼如下:

以下是引用片段:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim mailObj As New MailMessage()

Dim smtp As SmtpMail

'定義SMTP伺服器的名稱

smtp.SmtpServer = "smtp.XXX.com"

'定義郵件的發送位址

mailObj.From = "[email protected]"

'定義郵件的接收位址

mailObj.To = " [email protected]"

'定義郵件的暗送位址

mailObj.Bcc= "[email protected]"

'定義郵件的抄送位址

mailObj.Cc = "[email protected]"

'定義郵件的主題

mailObj.Subject = "主題"

'定義郵件的主體

mailObj.Body = "郵件主體!"

'郵件以 HTML的格式發送

mailObj.BodyFormat = MailFormat.Html

'定義郵件的有限級,在此設定為高

mailObj.Priority = MailPriority.High

'給發送的郵件附加上一個附件

mailObj.Attachments.Add(New MailAttachment("c:aa.doc"))

smTp.Send(mailObj)

End Sub

3、在VB.Net或C#開發Windows 應用程式中使用System.Net.Sockets

也是基于SMTP協定  一、SMTP協定簡介

1、 用戶端通過伺服器的25端口建立TCP/IP連接配接

伺服器端: 220 server.com Simple Mail Transfer Service Ready

2、 用戶端使用“HELO”指令辨別發件人

用戶端:HELO server.com

伺服器端:250 server.com

3、 用戶端發送MAIL指令,伺服器端以OK作為響應表明準備接收

用戶端: MAIL FROM: 〈[email protected]〉

伺服器端: 250 OK

4、 用戶端發送RCPT指令辨別收件人,伺服器端回應是否願意為收件人接受郵件 伺服器端:250 OK

5、 協商結束後用指令DATA發送發送郵件

用戶端:DATA

伺服器端:354 Start mail input: end with 〈CRLF〉.〈CRLF〉

6、 用戶端以.表示結束輸入内容一起發送出去

用戶端:Subject: 〈CRLF〉

内容〈CRLF〉

.〈CRLF〉

7、用戶端用QUIT指令退出。

用戶端:QUIT

伺服器端:250 server.com closing transmission channel

優點:可以在此基礎上開發出自己的元件,利用Sockets我們可以進行網絡程式設計開發

缺點:程式量相對較多,

發送郵件的代碼如下:

以下是引用片段:

Dim sendData As String

Dim szData As Byte()

Dim CRLF As String

CRLF = "rn"

'建立與伺服器25端口的連接配接

Dim SmtpServ As New TcpClient(txtsmtp.Text, 25)

lstlog.Items.Clear()

'顯示伺服器初始資訊

Dim.NetStrm As.NetworkStream

.NetStrm = SmtpServ.GetStream()

Dim RdStrm As New StreamReader(SmtpServ.GetStream())

If RdStrm.ReadLine() 〈〉 "" Then lstlog.Items.Add(RdStrm.ReadLine())

'

sendData = "HELO server " CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'标志發件人

sendData = "MAIL FROM: " "〈" txtfrom.Text "〉" CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'标志收件人

sendData = "RCPT TO: " "〈" txtTo.Text "〉" CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'準備發送内容

sendData = "DATA " CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'發送主題

sendData = "SUBJECT: " txtsub.Text CRLF

'發送内容

sendData = sendData txtmsg.Text CRLF

'結束發送

sendData = sendData "." CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'退出

sendData = "QUIT " CRLF

szData = System.Text.Encoding.ASCII.GetBytes(sendData.ToCharArray())

.NetStrm.Write(szData, 0, szData.Length)

lstlog.Items.Add(RdStrm.ReadLine())

'關閉連接配接

.NetStrm.Close()

RdStrm.Close()

lstlog.Items.Add("連接配接關閉")

lstlog.Items.Add("發送成功")大家還可以參考:使用C# 建立郵件發送元件(SMTP)

4、IIS SMTP自帶的基本的發信元件CDONTS

你不必專門下載下傳,微軟已經提供了這個元件,隻要安裝了2000,NT的SMTP就會有的。

優點:元件由作業系統自帶

缺點:功能比較差,可擴充性不強Mymail = CreateObject("CDONTS.NewMail")

Mymail.From = *** '信件發送者信箱

Mymail.To = *** ‘信件接收者信箱

Mymail.CC = *** '抄送

Mymail.BCC = *** ’密件發送

Mymail.Subject = *** ‘信件主題

Mymail.Body = *** ’信件正文

'設定優先級,0-不重要,1-一般,2-重要。

Mymail.Importance = 2

Mymail.Send()

Mymail = Nothing  5、使用JMail元件

Jmail具有以下特點:

(1)可以發送附件;

(2)詳細日志能力,便于你檢視問題所在;

(3)設定郵件發送的優先級;

(4)支援多種格式的郵件發送,比如說以HTML或者TXT的方式發送郵件。這是個免費的元件。

(5)密件發送/(CC)抄送/緊急信件發送能力;

(6)最關鍵的就是--免費的元件,不必發錢,是以非常值得使用。

網站:目前版本是4.3

JMail元件的常用屬性:Body   郵件正文

Logging   調用Log記錄,供Debug用

Priority   郵件的優先程度,從1到5

Sender   發件人

ServerAddress   SMTP伺服器的IP位址或名稱

Subject   郵件标題

JMail元件的常用方法:

AddAttachment   指定附件檔案

AddRecipient   加入一個收件人

AddRecipientBCC   隐藏的副本抄送,隻有發件人和BCC收件人知道。

AddRecipientCC   副本抄送

Execute   送出郵件

了解必要的屬性及方法後,餘下的部分接收使用者輸入的Email,當成參數傳給AddRecipient方法,然後根據需要填上其餘屬性,最後以Execute方法寄出。例如:

以下是引用片段:

Dim JMail

JMail = Server.CreateObject("JMail.SMTPMail")

JMail.Logging = True

JMail.ServerAddress = "202.96.144.48"

JMail.Sender = "[email protected]"

JMail.Subject = "subject."

JMail.Body = "body."

JMail.AddRecipient("[email protected]")

JMail.AddAttachment("c:go.gif")

JMail.Priority = 3

JMail.Execute()

JMail = Nothing

總結:選擇何種方案,視程式的用途和需求而定,本文例出的幾種方案,供大家參考。例如用友軟體U8,調用outlook元件,一樣整合到自己的軟體中。我編寫的管理系統,自己寫元件(SMTP),功能同樣強大,不過Coding的時間就長了!

一起學習

.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案.NET環境下五種不同的郵件發送解決方案

閱讀(610) | 評論(0) | 轉發(0) |