当你需要在VC程序中提供邮件支持功能的时候,你有许多种选择:
1)根据SMTP,POP3,MIME等协议从零开始实现。这要求熟悉RFC 821,RFC 822,RFC 1123, RFC 1652, RFC 1939, RFC2045-2049等一系列协议, 您可以实现一切可能实现的功能,但同时需要花大量的时间。
2)利用一些免费的封装类,比如CSMTP,CPOP3。虽然可以达到快速实现的目的,但功能非常有限。
3)利用MAPI调用支持MAPI的邮件发送程序( 例如:Outlook )发送邮件,这种实现方式需要客户端安装指定的邮件发送程序,不够灵活
4)利用现成的组件例如:w3 JMail组件来构建您的系统,JMail组件功能强大,可以轻松完成邮件发送、接收、加密、集群传输等工作。
虽然JMail用得最多的是ASP下的应用,但它在其它语言中都能够很好地工作,本文将针对w3 JMail 4.3在VC中的使用展开讨论。
一、准备篇
1.1 组件的安装
因为JMail4.3与以前的版本相比接口有了变动,所以推荐您使用4.3版本,您可以到以下网址下载JMail 4.3
DIMAC公司 http://www.dimac.net/
VC知识库 http://www.vckbase.com/tools
1.2 快速邮件发送程序MINI版
我们从这个小例子大致了解一下JMail组件的工作过程
#import "jmail.dll" // 导入jmail.dll, 假如jmail.dll不在工程目录下,您需要写上完整路径
void main()
{
CoInitialize(NULL); // COM的初始化
{
// 创建SpeedMailer实例
jmail::ISpeedMailerPtr pSpeedMailer("JMail.SpeedMailer");
// 发送邮件
pSpeedMailer->SendMail("yourmail@163.com", // 发件人邮箱
"webmaster@163.com", // 收件人邮箱
"主题:你好!", // 主题
"正文:大家好才是真的好!", // 正文
"smtp.163.com"); // SMTP服务器
}
CoUninitialize();
}
看了上述代码您肯定会说真的很容易,这个例子是利用了ISpeedMailer接口来发送简单的邮件,我想大家一看就清楚。
为了使这个流程看起来不至于令人生畏,我把异常捕捉省略了,在实际使用中应该加入异常捕捉,具体方法请见下文。