一组实现邮件发送功能的c++封装类(附源码)

一组实现邮件发送功能的c++封装类

[名称]

SMailer (Simple Mail Sender)

[由来]

这个程序是笔者近日在实验邮件发送系统时写就的,原本只想实现功能了事,可也许是程序员的惯常品性所至,几经完善的结果就成了如今这个样子了。现在将整理之后的源代码一并奉上,大家可以根据需要加入到自己的系统中去。

[功能]

- 支持验证功能,为可选项

- 支持包括html文本、普通文本在内的混排方式

- 支持按特定优先级发送邮件

- 支持一次发送多个附件,为可选项

- 支持多收件人发送,对于某封邮件,可以选择一次只向一个人发送,也可以选择发送给所有人

[说明]

- 全部源代码可以在这里下载到:http://morningspace.51.net/resource/SMailer.php,同时还有一篇更为详细的介绍性文章

- 程序TestSMailer.cpp演示了如何使用SMailer的功能,这是一个命令行形式的应用程序

- 时间的原因,我没有编写GUI,不过由于所有功能均已封装,要将SMailer加入GUI系统中应该是易如反掌的

- 程序在MSVC6编译器下运行通过,并在Cygwin-b20下编译通过(头文件要做一点小小的改动),由于代码中采用了S(T)L及BSD风格的socket,所以在其余平台上的移植应该也不会很麻烦

- 若使用MSVC6命令行编译器,如下编译命令可供参考:

cl -GX TestSMailer.cpp SMailer.cpp ../MUtils/Base64Helper.cpp ws2_32.lib

[组成]

程序中的几乎所有类都位于SMailer名字空间之下,以下是诸类的简要说明,更为详细的说明请参考《一组实现邮件发送功能的c++封装类 — SMailer》一文:

- MimeContent:抽象类,代表邮件正文部分和附件

- PlainTextContent:派生自MimeContent,代表普通文本的正文

- TextHtmlContent:派生自MimeContent,代表html格式的正文

- AppOctStrmContent:派生自MimeContent,代表文件形式的附件

- Priority:工具类,定义了三种级别的邮件优先级

- MailInfo:封装了一封邮件的所有信息

- MailWrapper:内含了MailInfo,用来对MailInfo的信息进行加工再处理

- MailSender:邮件发送类

- ErrorMessage:工具类,用于为给定操作的失败提供统一的错误描述信息,是一个单件

- MailException:工具类,程序中出错时会抛出该异常

此外还有如下几个工具类,它们位于MUtils名字空间之下:

- FileHelper:提供文件I/O功能

- WinSockHelper:提供针对WinSock编程所必要的支持功能

- Base64Helper:提供Base64的编码/解码功能

-- Morning --

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
因工作需要在Linux环境中用C++编写个发送邮件的程序,着实费了点周折,最终得以满意解决,现将历程与成果与大家分享! 一、刚开始网上一通逛搜,发现Linux环境下,发邮件使用较多的方法是libesmtp包,网上也有示例,按照相关章的指引,很容易就实现的邮件的发送,但问题是不知道如何实现SSL。 二、发现libesmtp文件中有个smtp_starttls_set_ctx接口,似乎是可以解决ssl问题的,逛搜libesmtp解决SSL发送邮件的解决办法,几乎无任何信息,后来下载了个libesmtp的源代码包libesmtp-1.0.6.tar.bz2,内含examples示例目录,可以直接编译成功,但似乎是只支持tls邮件发送,而不支持ssl邮件的发送,百思不得其解。 三、接着寻找别的解决办法,在CSDN搜到一个csmtp说可以解决SSL邮件发送问题的资源,但下载需要50积分,说心里话能解决问题50积分也是值得的,但没有呀,提供资源者还比较仁义,告知资来源于https://www.codeproject.com,于是乎在codeproject找到了csmtp的资源,有两个版本,v2.4版本包CSmtp_v2_4_ssl.zip,v1.8版本分为window(CSmtp_v1_8a.zip)和linux(CSmtp_v1_8b.zip)两个包。 四、为了能省点精力,就直接用版较低的linux版吧,解压后发现有makefile文件,可直接编译通过,一般的邮件能发送成功,但可惜的是v1.8版本也不支持ssl协议。 五、其实从包的名字上就能看出来v2.4版本开始支持 ssl协议,但v2.4并不分windows版本和linux版本,是否能支持linux呢,查看源代码发现有对linux的支持,只是包内没有makefile文件,似乎没有在linux目录下编译过,于是编写了个makefile文件尝试编译,竞然编通过,而且发送文件成功,经过测试可以支持ssl邮件的发送,因暂无需求tls未做测试。 六、现将程序重新打包成csmtp_v2.4_linux.tar文件,与大家分享,文中所提到的相关资源包都一并打包到资源中了。 最后感谢原创christopher w. backen提供的代码资源!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值