在上一篇 VBA 中發(fā)送郵件(使用 Outlook)中,VBA 通過 Outlook 來發(fā)郵件不僅頻繁的彈出提示窗口要求確定,而且需要在 Outlook 中配置好,不能隨意使用郵件服務器。對此,是否有相當于 JavaMail 那樣的第三方組件呢?Google 幫忙,果然找到一個,名曰 w3 JMail,J 為首,其實與 Java 無任何關系。
可以在網(wǎng)絡上搜索 w3 JMail Personal V4.3,或者直接到官網(wǎng) http://www.dimac.net 去下載,w3 Jmail 的授權方式是免費的。默認位置安裝好 JMail 之后,是在 C:\Program Files\Dimac\w3JMail4 可以看到 Examples 目錄、jmail.dll、w3jmail4.pdf 和 readme.txt 文件。可以查閱w3jmail4.pdf 中的使用幫助。我們所要的文件其實只是那個 jmail.dll,安裝程序會自動幫你注冊 jmail.dll。若未運行安裝程序,只是拷貝了 jmail.dll,則要運行 regsvr32 jmail.dll 注冊它即可。
可以看看那個 Examples 目錄,發(fā)現(xiàn)可支持 ASP、Assembly、Delphi、Visual C++、xml,自然像 JS、VBS、VB、VBA 那樣的語言中也能使用。它不僅可以用來發(fā)送郵件,也能通過 POP 協(xié)議接收郵件。下面看一段接收郵件的代碼:
01.'使用 JMail 組件來發(fā)送郵件
02.Function JmailSend(Subject, HtmlBody, MailTo)
03. Dim JmailMsg As New jmail.Message
04. With JmailMsg
05. .Encoding = "GBK"
06. .MailServerUserName = "Unmi" 'smtp 驗證用戶名
07. .MailServerPassWord = "xxxxxx" 'smtp 驗證密碼
08. .AddRecipient MailTo '收件人
09. .AddRecipientCC "fantasia@sina.com" '抄送
10. .AddRecipientBCC "broodwar@2911.net" '暗送
11. .From = "unmi@2911.net"
12. .FromName = "隔葉黃鶯"
13. .Charset = "GBK"
14. .ContentType = "text/html"
15. '.Priority = 1 '重要級別
16. .Logging = True '為 True,可用 JmailMsg.Log 獲得與服務器交互的詳細日志信息
17. .Silent = True '為 True,出錯時會有 JmailMsg.ErrorMessage 回送消息
18. .Subject = Subject
19. '.Body = HtmlBody '作為純文本內(nèi)容發(fā)送,設置 Body 屬性
20. .HtmlBody = HtmlBody '用這個可以發(fā)送 Html 內(nèi)容
21.
22. .AddAttachment "c:\users.ctl" '發(fā)送附件
23.
24. If .Send("mail.2911.net") Then '指定郵件服務器
25. JmailSend = "發(fā)送成功"
26. Else
27. JmailSend = JmailMsg.ErrorMessage
28. End If
29. MsgBox JmailMsg.Log
30. .Close
31. End With
32. Set JmailMsg = Nothing
33.End Function
在 Excel 的 Microsoft Visual Basic 編輯器中要引用注冊的“JMail 4.0 Library”, 代碼中的 AddXxx 方法可以執(zhí)行多次,如增加多個收件人、多個附件等。真正實現(xiàn)批量全自動發(fā)送,程序中可動態(tài)的選擇郵件服務器。
用 w3 JMail 組件比起調(diào)用 Outlook 可要方便的多,Outlook 可以不用配置,發(fā)布時只需要帶個 jmail.dll 動態(tài)庫,用 regsvr32 jmail.dll 注冊一下即可。