我来跟大家聊聊我是怎么用VB写代码发邮件的。这事儿,说起来还挺有意思的。起初,我就是想着搞个小程序,能定时从数据库里扒拉出那些需要发送的邮件,然后自动给它们发出去。毕竟手动一个个来,那得多累!
于是我开始琢磨着怎么设计这个小程序。我觉得,至少得有三个表。第一个是“发件箱”(我给它起名叫mail_outbox),用来放那些准备要发的邮件;第二个是“已发送”(mail_sent),用来记录那些已经发送成功的邮件。第三个是“发送失败”。后来在发送的过程中,发现发送失败的邮件还是有必要记录一下的,于是又添加“发送失败”表。
我一开始想得挺美,准备把它做成一个通用的版本,以后啥邮件都能用它来发。我就开始动手写代码。
我得让VB能跟Outlook搭上线。因为打算用的是Outlook组件嘛所以需要先引用它。于是我在代码里写上这么两句:
' 引用Outlook组件
Dim oOutlook As *
Dim oMail As *
这两句的意思,就是告诉VB,我要用Outlook的东西。得创建Outlook对象:
' 创建Outlook对象
Set oOutlook = CreateObject("*")
这样,VB就能通过这个oOutlook对象,来操作Outlook。创建连接,发送邮件指令,数据传输,然后关闭连接,这些步骤都不能少。比如发送邮件指令,我得告诉服务器发件人是谁,收件人是谁。这些信息,我都得通过代码告诉服务器。
然后,我就开始写发送邮件的具体代码。这里头,我定义一堆变量,像什么OLAPP、OLMail、MailBody等等,分别用来表示Outlook程序、邮件对象、邮件正文等等。发送邮件指令的时候,我用“MAIL FROM”表示发件人,“RCPT TO”表示收件人。数据传输时,我用“DATA”指令开始,然后用“.(CRLF).(CRLF)”结束邮件内容。发送完毕后,再用一个“QUIT”指令告诉服务器,我要断开连接。
我把这些逻辑都写进一个叫SendEmail的子程序里:
Option Explicit
Sub SendEmail()
Dim OLAPP As *
Dim OLMail As *
Dim MailBody As String
Dim c As Integer
这里还有一大段具体的逻辑代码,就不详细列举。我就是通过这些代码,让VB能够操纵Outlook发送邮件。
这个过程中,我还得处理各种可能出现的情况。比如说,邮件地址不对怎么办?网络断怎么办?发送失败怎么办?这些我都得考虑到,并且在代码里做好相应的处理。不过经过一番折腾,总算是把这个小程序给捣鼓出来。它已经能按照我的设想,定时从数据库里把邮件找出来,然后通过Outlook自动发出去。你们要是也想试试,可以照着我的步骤来,挺简单的!