贴上来是其中一个贴子,其他的内容在参考资料的网址里
Visual Basic 6中发送邮件的新方法
用VB6编写发送邮件的程序,有多种E-mail组件可供选择,如MAPIMessages、IIS40附带的CDONTS(NTS Collaboration Data Objects)以及许多第三方厂商开发的Email软件等。本文介绍用CDONTS开发VB下的邮件程序方法。
1 确认已安装SMTP服务器
首先,必须确认在IIS服务器上已安装SMTP服务器,这是安装Option Pack时被缺省安装的选项。如果SMTP服务器已安装,在System32目录下会存在一个名为cdontsdll的文件。
2 最简单的邮件发送程序
以下是一个最简单的邮件发送程序,它由me@hotmailnet向abc@263net发出一封标题为“Title”、内容为“Hello”的E-mail:
Private Sub cmdSendMail_Click()
Dim objMail as Object
Set objMail=CreateObject("CDFONTSDLL")
ObjMailSend "me@hotmailnet ", "abc@263net","Title","Hello"
Set objMail=nothing
End Sub
3 发送邮件附件
如果有附加的文件需要随同邮件传送,可以使用CDONTS的AttachFile方法:
Private Sub cmdSendMail_Click()
Dim objMail as Object
Set objMail=CreateObject("CDFONTSDLL")
With ObjMail
From= "me@hotmailnet "
To= "abc@263net"
Subject="Title"
Body="Hello"
AttachFile "c:\document\ sampledoc","sampledoc"
Send
End With
Set objMail=nothing
End Sub
4 CDONTS组件常用属性和方法
CDONTS组件常用的属性和方法列举如下:
属性:
Version:返回CDONTS组件的版本号
MailFormat:邮件格式,1-普通文本类型;0-MIME类型
Cc:设置一个或多个参阅的邮件地址
From:邮件发送者的地址
To :邮件接受者的地址
Subject:标题
Body:内容
BodyFormat:内容格式,1-普通文本;0-超文本
方法:
AttachFile:附加一个文件
AttachURL:附加一个地址
Send:发送邮件
5 发送超文本格式的E-mail
你一定见到过许多使用超文本格式的E-mail,其中不但可以有、声音,甚至还可以嵌入动画。如果给你的朋友也发送一封这样的邮件,一定会带给他(她)意外的惊喜,因为这用一般的邮件发送程序是无能为力的。以下使用CDONTS组件发送一个HTML格式的邮件,其中包含有一幅名为samplegif的,程序如下:
Private Sub cmdSendMail_Click()
Dim objMail as Object
Set objMail=CreateObject("CDFONTSDLL")
Dim strHTML as String
StrHTML=""
StrHTML= StrHTML+""
StrHTML = StrHTML +"
用CDONTS发送Email的例子"
StrHTML= StrHTML+"
"
StrHTML= StrHTML+"
以上例子嵌入了samplegif
"
StrHTML= StrHTML+""
With ObjMail
From= "me@hotmailnet "
To= "abc@263net"
Subject="Title"
Body=strHTML
AttachURL "c:\mydata\samplegif","samplegif"
BodyFormat=0
EmailFormat=0
Send
End With
Set objMail=nothing
End Sub
到这里,相信大家一定发现SMTP邮件处理的一个缺陷了。SMTP服务器接收你的输出消息,但并不做发送者名字和地址的验证,这本是由SMTP的异步发送机制所决定的,但有人可能别有用心地用它来假扮别人发送邮件!本文强烈建议各位切勿轻易试用,一旦让ISP知道你的行径,你的帐号极可能会被立即删除。
NameSpace = ">
主机A的处理 :
发送方从第7层、第6层到第1层由上至下按照顺序传输数据,而接收端则从第1层、第2层到第7层由下至上向每个上一级分层传输数据。每个分层上,在处理由上一层传过来的数据时可以附上当前分层的协议所必须的“首部”信息。然后接收端对收到的数据进行数据“首部”与“内容”的分离,再转发给上一分层,并最终将发送端的数据恢复为原状。
现在假设要发送一封电子邮件
应用层 :
从用户输入完所要发送的内容并点击“发送”按钮的那一刻开始,就进入了应用层协议的处理。该协议会在所要传送数据的前端附加一个 首部 (标签)信息。该首部标明了邮件内容为“早上好”和收件人为“B”。这一附有首部信息的数据传送给主机B以后由该主机上的收发邮件软件通过“收信”功能获取内容。
主机B上的应用收到由主机A发送过来的数据后,分析其数据首部与数据正文,并将邮件保存到硬盘或是其他非易失性存储器以备进行相应的处理。如果主机B上收件人的邮箱空间已满无法接收新的邮件,则会返回一个错误给发送方。对这类异常的处理也正属于应用层需要解决的问题。
主机A与主机B通过它们各自应用层之间的通信, 最终实现邮件的存储 。
表示层 :
表示层的“表示”有“表现”、“演示”的意思,因此更关注数据的具体表现形式。此外,所使用的应用软件本身的不同也会导致数据的表现形式截然不同。例如有的字处理软件创建的文件只能由该字处理器厂商所提供的特定版本的软件才来打开读取。
那么,电子邮件中如果遇到此类问题该如何解决呢?如果用户A与用户B所使用的邮件客户端软件完全一致,就能够顺利收取和阅读邮件,不会遇到类似的问题。但是这在现实生活当中是不大可能的。让所有用户千篇一律地使用同一款客户端软件对使用者来说也是极不方便的一件事情。
解决这类问题有以下几种方法。首先是利用表示层,将数据从“某个计算机特定的数据格式”转换为“网络通用的标准数据格式”后再发送出去。接收端主机收到数据以后将这些网络标准格式的数据恢复为“该计算机特定的数据格式”,然后再进行相应处理。
在前面这个例子中,由于数据被转换为通用标准的格式后再进行处理,使得异构的机型之间也能保持数据的一致性。这也正是表示层的作用所在。即 表示层是进行“统一的网络数据格式”与“某一台计算机或某一款软件特有的数据格式”之间相互转换的分层 。
此例中的“早上好”这段文字根据其编码格式被转换成为了“统一的网络数据格式”。即便是一段简单的文字流,也可以有众多复杂的编码格式。如果未能按照特定格式编码,那么在接收端就是收到邮件也可能会是乱码。
表示层与表示层之间为了识别编码格式也会附加首部信息,从而将实际传输的数据转交给下一层去处理 。
会话层 :
假定用户A新建了5封电子邮件准备发给用户B。这5封邮件的发送顺序可以有很多种。例如,可以每发一封邮件时建立一次连接,随后断开连接。还可以一经建立好连接后就将5封邮件连续发送给对方。甚至可以同时建立好5个连接,将5封邮件同时发送给对方。 决定采用何种连接方法是会话层的主要责任。会话层主要管理何时建立连接,何时发送数据。
会话层也像应用层或表示层那样,在其收到的数据前端附加首部或标签信息后再转发给下一层。而这些首部或标签中记录着数据传送顺序的信息。
传输层 :
主机A确保与主机B之间的通信并准备发送数据。这一过程叫做“建立连接”。有了这个通信连接就可以使主机A发送的电子邮件到达主机B中,并由主机B的邮件处理程序获取最终数据。此外,当通信传输结束后,有必要将连接断开。
如上, 进行建立连接或断开连接的处理,在两个主机之间创建逻辑上的通信连接即是传输层的主要作用 。此外, 传输层为确保所传输的数据到达目标地址会在通信两端的计算机之间进行确认,如果数据没有到达,它会负责进行重发 。
例如,主机A将“早上好”这一数据发送给主机B。期间可能会因为某些原因导致数据被破坏,或由于发生某种网络异常致使只有一部分数据到达目标地址。
假设主机B只收到了“早上”这一部分数据,那么它会在收到数据后将自己没有收到“早上”之后那部分数据的事实告知主机A。主机A得知这个情况后就会将后面的“好”重发给主机B,并再次确认对端是否收到。
这就好比人们日常会话中的确认语句:“对了,你刚才说什么来着?”计算机通信协议其实并没有想象中那么晦涩难懂,其基本原理是与我们的日常生活紧密相连、大同小异的。
由此可见,保证数据传输的可靠性是传输层的一个重要作用。为了确保可靠性,在这一层也会为所要传输的数据附加首部以识别这一分层的数据。然而,实际上将数据传输给对端的处理是由网络层来完成的。
网络层 :
网络层的作用是在网络与网络相互连接的环境中,将数据从发送端主机发送到接收端主机 。如下图所示,两端主机之间虽然有众多数据链路,但能够将数据从主机A送到主机B也都是网络层的功劳。
在实际发送数据时,目的地址至关重要。这个地址是进行通信的网络中唯一指定的序号。也可以把它想象为我们日常生活中使用的电话号码。只要这个目标地址确定了,就可以在众多计算机中选出该目标地址所对应的计算机发送数据。
基于这个地址,就可以在网络层进行数据包的发送处理。而有了地址和网络层的包发送处理,就可以将数据发送到世界上任何一台互连设备。网络层中也会将其从上层收到的数据和地址信息等一起发送给下面的数据链路层,进行后面的处理。
数据链路层和物理层 :
通信传输实际上是通过物理的传输介质实现的。数据链路层的作用就是在这些通过传输介质互连的设备之间进行数据处理。
物理层中,将数据的0、1转换为电压和脉冲光传输给物理的传输介质,而相互直连的设备之间使用地址实现传输。这种地址被称为MAC地址,也可称为物理地址或硬件地址。采用MAC地址,目的是为了识别连接到同一个传输介质上的设备。因此,在这一分层中将包含MAC地址信息的首部附加到从网路层转发过来的数据上,将其发送到网络。
网络层与数据链路层都是基于目标地址将数据发送给接收端的,但是网络层负责将整个数据发送给最终目标地址,而数据链路层则只负责发送一个分段内的数据。
主机B的处理 :
接收端主机B上的处理流程正好与主机A相反,它从物理层开始将接收到的数据逐层发给上一分层进行处理,从而使用户B最终在主机B上使用邮件客户端软件接收用户A发送过来的邮件,并可以读取相应内容为“早上好”。
总结 :
在计算机网络中,发送数据经过了七层。
在发送端:
应用层负责把数据要发送的数据交给表示层。
表示层确定“我说的语言对方听得懂,让对方听得懂的方式是把数据转成某种格式。”,然后交给下一层。
会话层负责何时连接对方,何时发送,怎么发。
传输层负责建立连接,和我发的东西对方有没有都准确收到。
网络层负责发送到目的的地址。
数据链路层也负责发送,但是负责的是到下一站。
物理层负责把数据都转换成0和1,负责真正的在物理设备上传输。
using System; using SystemCollectionsGeneric; using SystemLinq; using SystemText; using SystemNetMail; namespace Mail { class SmtpSendMail { public static bool SendMail(string host, string username, string password, string from, string to, string title, string content) { SmtpClient _smtpClient = new SmtpClient(); _smtpClientDeliveryMethod = SmtpDeliveryMethodNetwork;//指定电子邮件发送方式 _smtpClientHost = host; ;//指定SMTP服务器 _smtpClientCredentials = new SystemNetNetworkCredential(username, password);//用户名和密码 MailMessage _mailMessage = new MailMessage(from, to); _mailMessageSubject = title;//主题 _mailMessageBody = content;//内容 _mailMessageBodyEncoding = SystemTextEncodingUTF8;//正文编码 _mailMessageIsBodyHtml = true;//设置为HTML格式 _mailMessagePriority = MailPriorityHigh;//优先级 try { _smtpClientSend(_mailMessage); return true; } catch { return false; } finally { _mailMessageDispose(); } } } }
要发电子邮件你必须要有一个电子邮箱。现在用的比较多的或>
以上就是关于用VB怎么发送邮件代码全部的内容,包括:用VB怎么发送邮件代码、如何用vbs编写一个自动发送邮件的程序 要精简、计算机网络:发送一封邮件的图解过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)