VBA 中发送邮件(三. 使用 XMLHttpRequest 组件)

w3 JMail 组件虽好用,但实际使用过程中还是碰到问题,多数机器上都表现正常,唯独在一台机器上,JMail 的错误信息总是:jmail The message was undeliverable. All servers failed to receive the message。根据经验把病毒软件、防火墙都关了,Telnet 到邮件服务器的 25 端口,或者 Outlook 收发都是正常的,这下有些没辙了,而同事真正又要在那台奇怪的机器上发邮件。

再想它法了,对,就是 XMLHttpRequest,把功能分离,Excel 只提交 Http 请求,由 JSP 来完成实际的邮件发送工作,当然也可以实现为其他的形式。所以也就有两部分实现代码,分别为:

JSP 代码,使用的是 Apache 的 commons-email 组件,它还需要用到 activation.jar 和 mail.jar,关于 commons-email 的使用可参考前面的一篇:用 apache commons-email 轻松发送无乱码邮件。比如文件存为 sendmail.jsp,通过浏览器来访问时用的 URL 是 http://192.168.1.100:8080/WebUtils/sendmail.jsp

VBA 代码,在它的 Visual Basic 的编辑器中需要引用 Microsoft XML, v6.0 (或者其他相应版本,如 v2.6、v3.0、v4.0、v5.0):

可以在你的 Excel 表格中加个按钮,一点击按钮,程序循环的取表格中的数据,如参数 MailTo、Subject、Body 由 Excel 来提供。有关于 Excel 表格数据的读取这里就不涉及了。

参考:1. XmlHttpRequest的Post请求方式示例
        2. Using XmlHttp Correctly
        3. The XMLHttpRequest Object

 

类别: C++/VB. 标签: , . 阅读(330). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar
wpDiscuz