貼上來是其中一個(gè)貼子,其他的內(nèi)容在參考資料的網(wǎng)址里
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、南澗網(wǎng)站維護(hù)、網(wǎng)站推廣。
Visual Basic 6中發(fā)送郵件的新方法
用VB6編寫發(fā)送郵件的程序,有多種E-mail組件可供選擇,如MAPIMessages、IIS4.0附帶的CDONTS(NTS Collaboration Data Objects)以及許多第三方廠商開發(fā)的Email軟件等。本文介紹用CDONTS開發(fā)VB下的郵件程序方法。
1. 確認(rèn)已安裝SMTP服務(wù)器
首先,必須確認(rèn)在IIS服務(wù)器上已安裝SMTP服務(wù)器,這是安裝Option Pack時(shí)被缺省安裝的選項(xiàng)。如果SMTP服務(wù)器已安裝,在System32目錄下會(huì)存在一個(gè)名為cdonts.dll的文件。
2. 最簡單的郵件發(fā)送程序
以下是一個(gè)最簡單的郵件發(fā)送程序,它由me@hotmail.net向abc@263.net發(fā)出一封標(biāo)題為“Title”、內(nèi)容為“Hello”的E-mail:
Private Sub cmdSendMail_Click()
Dim objMail as Object
Set objMail=CreateObject("CDFONTS.DLL")
ObjMail.Send "me@hotmail.net ", "abc@263.net","Title","Hello"
Set objMail=nothing
End Sub
3. 發(fā)送郵件附件
如果有附加的文件需要隨同郵件傳送,可以使用CDONTS的AttachFile方法:
Private Sub cmdSendMail_Click()
Dim objMail as Object
Set objMail=CreateObject("CDFONTS.DLL")
With ObjMail
.From= "me@hotmail.net "
.To= "abc@263.net"
.Subject="Title"
.Body="Hello"
.AttachFile "c:\document\ sample.doc","sample.doc"
.Send
End With
Set objMail=nothing
End Sub
4. CDONTS組件常用屬性和方法
CDONTS組件常用的屬性和方法列舉如下:
屬性:
Version:返回CDONTS組件的版本號
MailFormat:郵件格式,1-普通文本類型;0-MIME類型
Cc:設(shè)置一個(gè)或多個(gè)參閱的郵件地址
From:郵件發(fā)送者的地址
To :郵件接受者的地址
Subject:標(biāo)題
Body:內(nèi)容
BodyFormat:內(nèi)容格式,1-普通文本;0-超文本
方法:
AttachFile:附加一個(gè)文件
AttachURL:附加一個(gè)地址
Send:發(fā)送郵件
5. 發(fā)送超文本格式的E-mail
你一定見到過許多使用超文本格式的E-mail,其中不但可以有圖片、聲音,甚至還可以嵌入動(dòng)畫。如果給你的朋友也發(fā)送一封這樣的郵件,一定會(huì)帶給他(她)意外的驚喜,因?yàn)檫@用一般的郵件發(fā)送程序是無能為力的。以下使用CDONTS組件發(fā)送一個(gè)HTML格式的郵件,其中包含有一幅名為sample.gif的圖片,程序如下:
Private Sub cmdSendMail_Click()
Dim objMail as Object
Set objMail=CreateObject("CDFONTS.DLL")
Dim strHTML as String
StrHTML=""
StrHTML= StrHTML+""
StrHTML = StrHTML +"
用CDONTS發(fā)送Email的例子"
StrHTML= StrHTML+"
"
StrHTML= StrHTML+"
以上例子嵌入了圖片sample.gif
"
StrHTML= StrHTML+""
With ObjMail
.From= "me@hotmail.net "
.To= "abc@263.net"
.Subject="Title"
.Body=strHTML
.AttachURL "c:\mydata\sample.gif","sample.gif"
.BodyFormat=0
.EmailFormat=0
.Send
End With
Set objMail=nothing
End Sub
到這里,相信大家一定發(fā)現(xiàn)SMTP郵件處理的一個(gè)缺陷了。SMTP服務(wù)器接收你的輸出消息,但并不做發(fā)送者名字和地址的驗(yàn)證,這本是由SMTP的異步發(fā)送機(jī)制所決定的,但有人可能別有用心地用它來假扮別人發(fā)送郵件!本文強(qiáng)烈建議各位切勿輕易試用,一旦讓ISP知道你的行徑,你的帳號極可能會(huì)被立即刪除。
Dim Lines = System.IO.File.ReadAllLines("D:\zhege\qp.txt")
'郵件源代碼應(yīng)該是分行讀取,替換掉這個(gè)數(shù)組就行。for代碼段符合流的讀取行方法(readline)。
Dim codeBuilder As New System.Text.StringBuilder
For Each code As String In Lines
code = code.Replace("==", "=")
If code.EndsWith("=") Then
code = code.Substring(0, code.Count - 1)
codeBuilder.Append(code)
ElseIf code "" Then
codeBuilder.AppendLine(code)
End If
Next
Dim reg As New System.Text.RegularExpressions.Regex("(=(\d|[A-F]){2}){1,}")
Dim match As System.Text.RegularExpressions.Match = Nothing
While reg.IsMatch(codeBuilder.ToString)
match = reg.Match(codeBuilder.ToString)
Dim Bytes As New List(Of Byte)
For Each cMatch As String In Replace(match.Value, "=", "", 1, 1).Split("="c)
Bytes.Add(CByte("h" cMatch))
Next
codeBuilder = codeBuilder.Replace(match.Value, System.Text.Encoding.Default.GetString(Bytes.ToArray))
End While
MsgBox(codeBuilder.ToString)
我只測試了一段qp代碼,可能有誤。如果qp不是Default編碼,結(jié)果可能是亂碼,需要注意
在Identity2.0里面封裝了IIdentityMessageService接口,可以用來發(fā)送接收郵件。
看看
Imports System.Threading.Tasks
Imports System.Security.Claims
Imports Microsoft.AspNet.Identity
Imports Microsoft.AspNet.Identity.EntityFramework
Imports Microsoft.AspNet.Identity.Owin
Imports Microsoft.Owin
Imports Microsoft.Owin.Security
public function SendAsync(message as IdentityMessage) as task
dim credentialUserName = "郵箱登錄名"
dim sentFrom = "你的郵箱地址"
dim pwd= "郵箱登錄密碼";
dim client as new System.Net.Mail.SmtpClient("smtp服務(wù)器地址")
client.Port = 25'mtp郵件服務(wù)器端口
client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
client.UseDefaultCredentials = false
dim credentials as new System.Net.NetworkCredential(credentialUserName, pwd)
client.EnableSsl = true
client.Credentials = credentials
dim mail as new System.Net.Mail.MailMessage(sentFrom, message.Destination)
mail.Subject = message.Subject
mail.Body = message.Body
return client.SendMailAsync(mail)
end function
在這篇文章里, 我們在盡可能廣的范圍廣內(nèi)講解使用 ASP.NET發(fā)送電子郵件,包括選擇電子郵件格式, 優(yōu)先權(quán), 附件和電子郵件內(nèi)碼。
現(xiàn)在讓我們逐步探索使用ASP.NET發(fā)送電子郵件。我們將使用VB來說明例子, 但是我們最后的代碼包括VB 和C # 。
Step1: 包括命名空間
System.Web.Util 命名空間在ASP.NET 里。這命名空間包含送電子郵件的所有必要對象。
對象是:
對象 總結(jié)
SmtpMail 代表郵件系統(tǒng)。發(fā)送電子郵件。
MailMessage 消息, 例如發(fā)信人地址, 收信人地址等。
MailFormat 格式,郵件的格式- HTML, 文本, 等
MailAttachment 代表電子郵件附件
MailEncoding enum 代表任一個(gè)內(nèi)碼譬如Base64 或UUencode 。
MailPriority enum 設(shè)置郵件優(yōu)先權(quán)。價(jià)值: 高, 低, 正常
% @Import Namespace = "System.Web.Util " %
OK第一部已經(jīng)完成了
步驟2: MailMessage 對象示例
聲明MailMessage對象。
Dim mailObj AS new MailMessage
MailMessage 對象屬性:
屬性 描述
From 發(fā)信人的地址
To 收信人的地址
Subject 郵件主題
Body 郵件正文
cc 郵件副本接受人地址
bcc 郵件副本接受人地址比顯示在郵件中(密件)
Priority 郵件的優(yōu)先權(quán)
BodyEncoding 郵件內(nèi)碼
BodyFormat 郵件格式,html或文本
Attachments 郵件附件
以下的代碼片斷將展示MailMessage 對象。
mailObj.From = "abc@mydomain.com "
mailObj.To = Request.Form ( "to ")
mailObj.Subject = "subject of the mail "
mailObj.Body = "Message of the mail "
發(fā)送郵件使用SmtpMail 對象Send 方法。以下代碼片斷被使用送郵件
SmtpMail.Send(mailObj)
vb.net完整源代碼
%@page language= "VB " %
%@Import Namespace= "System.Web.Util " %
HTML
head
title 歡迎使用chenyangasp示例程序
/title
/head
BODY
SCRIPT LANGUAGE= "VB " RUNAT= "server "
' 這個(gè)方法當(dāng)提交時(shí)訪問服務(wù)器
Sub SendMail (Obj As Object, E As EventArgs)
Dim mailObj AS new MailMessage
'設(shè)置郵件的發(fā)送及接收地址
mailObj.From = Request.Form( "From ")
mailObj.To = Request.Form( "To ")
mailObj.Subject = "Subject Of the Mail "
mailObj.Body = "Body of the Mail "
'html格式的郵件
mailObj.BodyFormat = MailFormat.Html
'設(shè)置為高級優(yōu)先權(quán)
mailObj.Priority = MailPriority.High
'為郵件添加附件
'注意:這里我們創(chuàng)建了一個(gè)mailattachment對象添加一個(gè)附件到郵件中
mailObj.Attachments.Add(new MailAttachment( "c:\test.doc "))
'使用SmtpMail對象發(fā)送郵件
SmtpMail.Send(mailObj)
End Sub
/SCRIPT
asp:label ID= "Headingmsg " Text= "Enter Your Email Address: " RUNAT= "server "/
FORM METHOD= "post " RUNAT= "server "
Email Recipient: INPUT TYPE= "text " NAME= "to " br
Email Sender: INPUT TYPE= "text " NAME= "from "
INPUT TYPE= "submit " NAME= "Submit " VALUE= "Send Mail " RUNAT= "server " OnServerClick= "SendMail "
/FORM
/BODY
C#完整源代碼
%@page language= "C# " %
%@Import Namespace= "System.Web.Util " %
HTML
head
title 歡迎使用chenyangasp示例程序
/title
/head
BODY
SCRIPT LANGUAGE= "C# " RUNAT= "server "
// 這個(gè)方法當(dāng)提交時(shí)訪問服務(wù)器
public void SendMail (Object Obj, EventArgs E)
{
MailMessage mailObj = new MailMessage();
// 設(shè)置郵件的發(fā)送及接收地址
mailObj.From = Request.Form( "From ");
mailObj.To = Request.Form( "To ");
mailObj.Subject = "Subject Of the Mail ";
mailObj.Body = "Body of the Mail ";
// html格式的郵件
mailObj.BodyFormat = MailFormat.Html;
// 設(shè)置為高級優(yōu)先權(quán)
mailObj.Priority = MailPriority.High;
// 為郵件添加附件
// 注意:這里我們創(chuàng)建了一個(gè)mailattachment對象添加一個(gè)附件到郵件中
mailObj.Attachments.Add(new MailAttachment( "c:\\test.doc "));
// 使用SmtpMail對象發(fā)送郵件
SmtpMail.Send(mailObj);
}
/SCRIPT
asp:label ID= "Headingmsg " Text= "Enter Your Email Address: " RUNAT= "server "/
FORM METHOD= "post " RUNAT= "server "
Email Recipient: INPUT TYPE= "text " NAME= "to " br
Email Sender: INPUT TYPE= "text " NAME= "from "
INPUT TYPE= "submit " NAME= "Submit " VALUE= "Send Mail " RUNAT= "server " OnServerClick= "SendMail "
/FORM
/BODY