Skip to content

Repository files navigation

CSmtp - C++实现的支持SSL/TLS的SMTP邮件发送器

CSmtp是一个C++实现的支持SSL/TLS的SMTP邮件发送器,通过CSmtp可以实现SMTP协议的邮件发送,支持SSL/TLS加密。

开始使用

CSmtp项目提供两个发布件:mail_sender邮件发送应用csmtp功能静态库

如果需要集成进代码中,请引用csmtp功能库(参考demo文件夹下项目的实现);也可以直接使用mail_sender程序,通过命令行参数直接发送邮件。

构建

Windows平台提供可以直接使用的发布版本,包含csmtp.lib和mail_sender.exe,构建环境为Windows 10 - Visual Studio 2015 MSVC 140 - win32/x64。

Windows构建

在该项目文件夹下,打开cmd命令行窗口。

Windows下已二进制引入OpenSSL的发布库,在csmtp-ref文件夹下。执行以下命令将其解压:

build extract

如果系统没有安装CMake,请先安装CMake或下载CMake的portable压缩包解压,并修改script\config.bat文件,将CMake路径加入到临时环境变量PATH中,然后执行以下命令:

build config

最后执行以下命令构建项目,构建项目至少需要Visual Studio 2015:

build msvc Release x64 VS2015

当前支持VS2015、VS2017、VS2019,通过第四个参数进行指定。第二个参数指定生成的是Debug或Release,第三个参数指定生成的二进制是32位或64位。

测试构建环境:Windows 10 - Visual Studio 2015 MSVC 140 - OpenSSL 1.1.1l

Linux构建

Linux下构建需要安装OpenSSL,Ubuntu下一般自带该库,如果不存在可以使用以下命令安装(需要注意的是,用apt-get安装的OpenSSL可能不是最新的1.1.1版本,旧版本很可能存在安全漏洞及不再维护的风险,如果需要使用最新版本的OpenSSL需要手动进行编译,可以参考该文章):

sudo apt-get install libssl-dev

本项目构建的CMakeLists要求CMake版本至少为3.10以上,低版本的Ubuntu用apt-get只能安装大版本号为2的CMake,此时需要源码编译CMake并安装进系统中,可以使用以下命令编译安装CMake 3.16.0:

sudo apt install build-essential libssl-dev
wget http://www.cmake.org/files/v3.16/cmake-3.16.0.tar.gz
tar xf cmake-3.16.0.tar.gz
cd cmake-3.16.0/
./configure
make -j4
sudo make install

最后执行以下命令构建项目:

./build.sh linux Release x64

第二个参数指定生成的是Debug或Release,第三个参数指定生成的二进制是32位或64位。

测试构建环境:Ubuntu 14.04.3 - gcc 4.8.4 - OpenSSL 1.0.1f

mail_sender命令行参数说明

windows下使用mail_sender.exe,Linux下使用./mail_sender,以Windows为例:

mail_sender.exe ServerName=smtp.office365.com ServerPort=587 Security=tls User=用户 Password=密码 SenderName=发送者名称 SenderMail=发送者邮箱 "ReceiverMails=a@mail.com b@mail.com" Title=邮件标题 Body=邮件正文

简单的使用如上所示,这将使用outlook邮箱发送一封邮件给a@mail.comb@mail.com。接下来详细介绍各参数的含义及使用说明:

参数名称指定要求使用说明
ServerName必须指定邮箱服务器SMTP服务的地址名称
ServerPort有默认值邮箱服务器SMTP服务的端口,默认值为25,若邮箱服务器采用其他端口,需自行指定
Security有默认值安全连接类型,默认为none,可选none、ssl、tls
User必须指定用于邮箱登陆的账户名
Password必须指定用于邮箱登陆的账户密码
SenderName必须指定当前邮件的发件者名称
SenderMail必须指定当前邮件的发件者地址
ReceiverMails必须指定当前邮件的收件者地址,可以指定多个,多个收件者间用空格隔开
Title必须指定当前邮件的标题
Body必须指定当前邮件的正文
Files可选项,按需指定当前邮件的附加文件,可以指定多个,多个附加文件间用空格隔开,单个文件大小需小于25MB或邮箱服务器支持的最大大小
CharSet可选项,按需指定当前邮件的编码字符集,默认中文编码字符集gb2312
XMailer可选项,按需指定当前邮件的发送客户端名称,可以使用默认设置
XPriority可选项,按需指定当前邮件的等级,默认为normal,可选low、normal、high
Output有默认值,与邮件发送无关默认为true,当为true时,邮件发送成功时会输出详细信息到控制台

历史

该项目的前身来自CodeProject上的项目:

https://www.codeproject.com/Articles/98355/SMTP-Client-with-SSL-TLS

https://www.codeproject.com/Articles/28806/SMTP-Client

协议

本项目继续遵循前身的协议:The Code Project Open License (CPOL)

协议内容参考LICENSE.htm文件或CPOL官方发布链接

About

C++实现的支持SSL/TLS的SMTP邮件发送器

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages