由于业务上存在发送报警邮件的需求,一直想找一个简单易用的发送Email的C++库。
终于找到了,它就是jwSTMP(http://sourceforge.net/projects/jwsmtp/)。
最新的jwSTMP版本(1.32.15)能够跨平台(BSD、Linux和Windows等)的支持以C++代码或者C++库的形式编码发送Email。它可以发送附件、支持多个收件人(最多100个),支持CC(抄送)和BCC(隐藏性抄送);同样的,它也支持以HTML的方式发送邮件。
我们知道发送Email有POP3和SMTP两种方式。目前jwSTMP不支持POP3的方式。但是它提供了MX lookup方式,即直接得到目的地址的邮件交换服务器地址(MX)将邮件发送出去。
现在说说如何使用吧。
下载和编译。请到sourceforge上将它下载下来。如果使用Windows平台,直接点击工程文件即可(缺省是VC6的工程文件,我使用VS2008将工程文件转化也是可以的)然后编译即可;如果使用Linux,请执行通行的三部曲:
./configure
make
make install
代码修改。适合中国人的习惯,我将使用163的邮箱服务展示jwSMTP的用法。
最简单的demo1.cpp文件如下:
#include <iostream>
// 由于头文件所处的位置是jwsmtp-1.32.15\jwsmtp\jwsmtp,所以,需要注意include的路径
#include "jwsmtp/jwsmtp.h"
int main(int argc, char* argv[])
{
jwsmtp::mailer m("testjwstmp@163.com"/*接收者*/, "testjwstmp@163.com"/*发送者*/, "这里填写邮件标题",
"这里填写邮件内容", "smtp.163.com",
jwsmtp::mailer::SMTP_PORT, false);
//经过测试,163支持的auth认证是PLAIN模式
m.authtype(jwsmtp::mailer::PLAIN);
//这里输入认证用户名,注意哦,需要是***@163.com的用户名
m.username("testjwstmp@163.com");
//这里输入密码
m.password("******");
m.send(); // 这里发送邮件,需要注意的是,这里是同步模式哦!
std ::cout << m.response() << std::endl;//这里返回是否成功,250代表发送邮件成功;
system("pause");
return 0;
}
需要注意的是,虽然我在测试时发送在cpp文件中写入中文使用163