一个发送邮件的C++库–jwsmtp

接收邮件的,暂时没搞定,不过在SF上找到了这个发送邮件的库文件.它提供了一个比较完整的类,可以简单的调用发送邮件.下面是作者提供的一个例子,不过由于连SMTP发邮件需要密码,所以代码我改了一下.
// This file is part of the jwSMTP library. 
// 
//    jwSMTP library is free software; you can redistribute it and/or modify 
//    it under the terms of the GNU General Public License as published by 
//    the Free Software Foundation; either version 2 of the License, or 
//    (at your option) any later version. 
// 
//    jwSMTP library is distributed in the hope that it will be useful, 
//    but WITHOUT ANY WARRANTY; without even the implied warranty of 
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.    See the 
//    GNU General Public License for more details. 
// 
//    You should have received a copy of the GNU General Public License 
//    along with jwSMTP library; if not, write to the Free Software 
//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA    02111-1307    USA 
// 
//      http://johnwiggins.net 
//      smtplib@johnwiggins.net 
// 
// http://www.boost.org 
//#include <boost\thread\thread.hpp> 
 
#include <iostream> 
#include “jwsmtp/jwsmtp.h” 
 
using std::cout; 
using std::cin; 
using std::string; 
 
void Usage() { 
   cout << “jwSMTP library demo program\n” 
           “maildemo <email toaddress> <email fromaddress> <smtpserver>\n” 
           “   e.g.\n” 
           “      maildemo recipient@there.com me@server.com mail.server.com\n”; 

 
int main(int argc, char* argv[]) 

   if(argc != 4) { 
      Usage(); 
      return 0; 
   } 
 
   cout << “jwSMTP library demo program\n\n”; 
   string to(argv[1]); 
   string from(argv[2]); 
   string smtpserver(argv[3]); 
 
   if(to.length() < 2 || from.length() < 2 || smtpserver.length() < 2) { 
      Usage(); 
      return 0; 
   } 
 
   char str[2048]; 
   cout << “Please enter the subject of the mail\n”; 
   cin.getline(str, 500);     
   string subject(str); 
   strcpy(str, “”); 
 
   cout << “Please enter the message body end with \”.\” on a line by itself\n”; 
   string mailmessage; 
   while(true) { 
      cin.getline(str, 2048); 
      if(!strcmp(str, “.”)) 
         break; 
         
      mailmessage += str; 
      mailmessage += “\r\n”; 
      strcpy(str, “”); 
   } 
 
   cout << “\nPlease wait sending mail\n”; 
   // This is how to tell the mailer class that we are using a direct smtp server 
   // preventing the code from doing an MX lookup on ’smtpserver’ i.e. passing 
   // false as the last parameter. 
   jwsmtp::mailer mail(to.c_str(), from.c_str(), subject.c_str(), mailmessage.c_str(), 
                       smtpserver.c_str(), jwsmtp::mailer::SMTP_PORT, false); 
 
   mail.username(“suei8423@163.com”); 
   mail.password(“###”); 
   // using a local file as opposed to a full path. 
   mail.attach(“/root/Desktop/223901.jpg”); 
 
   // add another recipient (carbon copy) 
   //mail.addrecipient(“someoneelse@somewhere.net”, mailer::Cc); 
 
   // set a new smtp server! This is the same as setting a nameserver. 
   // this depends on the constructor call. i.e. in the constructor 
   // If MXLookup is true this is a nameserver 
   // If MXLookup is false this is an smtp server 
   //mail.setserver(“mail.somewherefun.com”); 
   // same again except using an IP address instead. 
   //mail.setserver(“192.168.0.1″); 
 
   // boost::thread thrd(mail); 
   // thrd.join(); // optional 
   // or:- 
 
   // Use authentication 
   //mail.username(“testuser”); 
   //mail.password(“secret”); 
   // LOGIN authentication by default 
   // if you want plain as opposed to login authentication 
   //mail.authtype(jwsmtp::mailer::PLAIN); 
       
   mail.operator()(); 
   cout << mail.response() << “\n\n”; 
 
   //mail.reset(); // now we can mail someone else. 
   //mail.setmessage(“flibbletooting”); 
   //mail.setsubject(“another message same object”); 
   //mail.attach(“/home/user1/image.gif”); 
   // or a win example 
   //mail.attach(“C:\\image.gif”); 
   //mail.addrecipient(“someoneelseagain@foobar.net”); 
 
   //mail.operator ()(); 
   //cout << mail.response() << “\n”; 
   return 0; 
}

作者提供的库要自己编译一次.
在编译例子程序时,WINDOWS的例子可以直接编译,在LINUX下要用类似下面的命令
g++ demo2.cpp -o demo2 -I/usr/local/include/jwsmtp-1.32 /usr/local/lib/libjwsmtp.a

时间: 2024-09-29 15:46:51

一个发送邮件的C++库–jwsmtp的相关文章

DomCore 1.00.09发布 一个基本的PHP库

DomCore 1.00.09此版本时间控制访问已被添加到每个变量的共享内存管理器."create"的方法已被添加到WALanguage来重建原始的XML文件.已被添加到数据源库的信息来源和内存使用之间多层次的缓存控制.还提供相应的手册和例子. DomCore是一个基本的PHP库,用于扩展到您的应用程序提供基本的功能.它的功能有一个扩展调试模式,增强错误和异常管理,类似Java编程,本地的静态语言和国际化,和大型文件操作(完整的目录复制和删除). 下载地址:http://www.web

一个轻量级的javascript库 pj介绍_lib_js

相对于其他语言来说,javascript脚本语言太小巧玲珑了,活泼灵动.个人非常喜欢写javascript代码.虽说网络上出名的javascript库充斥网络,jQuery.Prototype.Base.ExtJs--,功能也非常强大,使用起来也方便.但是有一个不太令人满意的地方,就是库本身太大了.有时只是用其中几个功能就必须得把整个库引进来,就jQuery来说,压缩了也还有70多KB,有时比一个网页文件还大.但我们有需要一个库来协助开发,所以自己就写了一个轻量级的javascript库,只支持

c++-我想写一个类动态连接库

问题描述 我想写一个类动态连接库 怎么写c++类动态连接库,就是导出一个类.然后写一个控制台程序调用出来. 解决方案 写完之后你把它编译成dll就行了,放在其他项目里直接引用 解决方案二: 在需要导出的类声明前面加上 declspec(dllexport)就可以导出到dll中了. 在另外一个工程使用该类的时候,需要在类名前加上declspec(dllimport)用来导入. 解决方案三: http://www.cnblogs.com/cswuyg/archive/2011/10/06/DLL2.

请教一个发送邮件是的发送人的问题,谢谢!~~

问题描述 最近做一个发送邮件的功能,首先用我自己的ID登陆:session=NotesFactory.createSession((String)null,(String)null,passwd);然后,再打开一个公共的数据库:db=session.getDatabase(servername,filename);可是,我发送邮件的时候,发件人就是我的ID,而不是打开数据库的那个用户名.那么请问,怎么样,才能让我发送邮件的发送人,是我公共数据库的名字,而不是我本人的登陆ID?谢谢!~~ 解决方案

《面向机器智能的TensorFlow实践》一1.3 TensorFlow:一个现代的机器学习库

1.3 TensorFlow:一个现代的机器学习库 TensorFlow由谷歌于2015年11月向公众正式开源,它是汲取了其前身-DistBelief在创建和使用中多年积累的经验与教训的产物.TensorFlow的设计目标是保证灵活性.高效性.良好的可扩展性以及可移植性.任何形式和尺寸的计算机,从智能手机到大型计算集群,都可运行TensorFlow.TensorFlow中包含了可即刻将训练好的模型产品化的轻量级软件,有效地消除了重新实现模型的需求.TensorFlow拥抱创新,鼓励开源的社区参与

DomCore 1.00.08发布 一个基本的PHP库

DomCore是一个基本的PHP库,用于扩展到您的应用程序提供基本的功能.它的功能有一个扩展调试模式,增强错误和异常管理,类似Java编程,本地的静态语言和国际化,和大型文件操作(完整的目录复制和删除). DomCore 1.00.08此版本一个新的WASHM库被添加到管理共享内存,包括示例,wiki中的文档和SHMhttp://www.aliyun.com/zixun/aggregation/16539.html">Error throwable.共享内存段和变量可以使用$SHM -&g

libstratanetsh 2.3.3发布 一个POSIX/ANSI C库

libstratanetsh是一个POSIX/ANSI C库,需要一个Foxmoxie网络STRATA家庭路由器(或任何服务器类型的应用程序,支持协议)的直接沟通.该库采用IPv4和http://www.aliyun.com/zixun/aggregation/9485.html">IPv6,以及GnuTLS加密,并可能在任何客户端或服务器端使用. libstratanetsh 2.3.3更新说明: This release adds a timeout system (netsh_set

Botan v1.10.0发布 一个C++的加密算法库

Botan 是一个 C++++ 的加密算法库,支持 AES, DES, SHA-1, RSA, DSA, Diffie-Hellman 等多种算法,支持 X.509 认证以及CRLs 和 PKCS #10. Botan v1.10.0更新日志: ·Detection for the rdrand instruction being added to upcoming Intel Ivy http://www.aliyun.com/zixun/aggregation/16410.html">

AutoDiff.NET 0.4 08/08/2011发布 一个纯粹的.NET库

AutoDiffhttp://www.aliyun.com/zixun/aggregation/13480.html">.NET是一个纯粹的.NET库,允许开发人员轻松地构成函数符号化,然后自动计算在任何给定的点函数值和梯度.结合一个基于梯度的优化库,它可是非常有用的.它已经过在Mono 2.10 Linux和.NET 4 Windows上的测试工作. AutoDiff.NET 0.4 08/08/2011该版本差异化错误的修正.修复TermUtils.Differentiate方法合约失