接收邮件的,暂时没搞定,不过在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

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

  1. 如何持续集成/交付一个开源.NET函数库到Nuget.org

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:这是一个简单的入门向导,涉及到GitHub.AppVeyor和Nuget.org. 最 ...

  2. Javascript的一个生产PDF的库: unicode和中文问题的解决

    Javascript的一个生产PDF的库: unicode和中文问题的解决基于canvas和jspdf库, 实现用javascript的支持中文pdf生成实用工具.参考:http://javascri ...

  3. C 封装一个简单二叉树基库

    引文 今天分享一个喜欢佩服的伟人,应该算人类文明极大突破者.收藏过一张纸币类型如下 那我们继续科普一段关于他的简介 '高斯有些孤傲,但令人惊奇的是,他春风得意地度过了中产阶级的一生,而  没有遭受到冷 ...

  4. 一个现代化的JSON库Moshi针对Android和Java

    Moshi 是一个现代化的JSON库针对Android和Java.它可以很容易地解析JSON成Java对象: String json = ...; Moshi moshi = new Moshi.Bu ...

  5. JQuery是继prototype之后又一个优秀的Javascript库

    JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Oper ...

  6. 一个发送邮件的java类,包含多种发送方法

    import java.util.Calendar;import java.util.Date; import java.util.Properties; import javax.mail.Addr ...

  7. 介绍一个python视频处理库:moviepy

    由于博客园的插件和我自己博客的插件不一致,代码以及视频插入转换很麻烦,所以还是我原来博客的地址查看吧. 介绍一个python视频处理库:moviepy

  8. android一个下拉放大库bug的解决过程及思考

    android一个下拉放大库bug的解决过程及思考 起因 项目中要做一个下拉缩放图片的效果,搜索了下github上面,找到了两个方案. https://github.com/Frank-Zhu/Pul ...

  9. 一个交互式可视化Python库——Bokeh

    本篇为<Python数据可视化实战>第十篇文章,我们一起学习一个交互式可视化Python库--Bokeh. Bokeh基础 Bokeh是一个专门针对Web浏览器的呈现功能的交互式可视化Py ...

随机推荐

  1. 小胖说事24-----property&#39;s synthesized getter follows Cocoa naming convention for returning &#39;owned&#39; objec

    今天在给类的属性命名的时候,用了newValue.就给报错:property's synthesized getter follows Cocoa naming convention for retu ...

  2. eclipse的SVN插件的配置

    http://www.cnblogs.com/kekec/archive/2010/08/09/1795581.html

  3. xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)

    链接地址:http://blog.csdn.net/mad1989/article/details/8167529 打包发布APP流程真机测试和APP发布流程APP提交审核流程真机测试打包发布上传出错 ...

  4. Linux权限操作 [转]

    Linux权限操作 本文内容来自<鸟哥linux私房菜>读后个人做的笔记,该书实为学习linux的很好入门教材 一.文件属性 ls ls -al列出所有的档案属性 ls是List的意思 档 ...

  5. cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示

    1.先定义坦克的一些属性 class Tank : public CCSprite { public : Tank(); ~Tank(); static Tank* createTankWithTan ...

  6. CloudStack 4.2 新功能:集成SNMP进行系统监控(原理篇)

    作者微博:http://weibo.com/tianchunfeng CloudStack 4.2 版本发布在即,相信不久后对 4.2 版本新功能(共有13个)的介绍会逐渐多起来.因为无论是从架构底层 ...

  7. Good Bye 2013---B. New Year Present

    New Year Present time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  8. java-多线程安全问题

    1. 安全问题产生原因 多个线程操作共享数据. 操作共享数据的线程代码有多条.当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了计算,就会产生线程安全问题. 2. 解决方案 java中用同步 ...

  9. Java与C#的语法区别(不断更新中...)

    1.static关键字: 在java中静态成员能够被对象和类名调用: 在C#中,静态成员只能被类调用不能被对象调用. 2.for循环: 在java中可以在for前面添加标记,然后在for循环中可以br ...

  10. javascript 回调函数应用

    回调函数是什么在学习之前还真不知道js回调函数怎么使用及作用了,下面本文章把我在学习回调函数例子给各位同学介绍一下吧,有需了解的同学不防进入参考. 回调函数原理: 我现在出发,到了通知你”这是一个异步 ...