#include <smtp_client.hpp>
SMTP 邮件发送客户端类,可以使用此类对象发送邮件,支持身份认证等功能
在文件 smtp_client.hpp 第 20 行定义.
◆ smtp_client()
acl::smtp_client::smtp_client |
( |
const char * |
addr, |
|
|
int |
conn_timeout = 60 , |
|
|
int |
rw_timeout = 60 |
|
) |
| |
构造函数
- 参数
-
addr | {const char*} SMTP 邮件服务器地址,格式:IP:PORT 或 domain:port |
conn_timeout | {int} 连接服务器的超时时间(秒) |
rw_timeout | {int} 网络 IO 超时时间(秒) |
◆ ~smtp_client()
acl::smtp_client::~smtp_client |
( |
| ) |
|
◆ auth_login()
bool acl::smtp_client::auth_login |
( |
const char * |
user, |
|
|
const char * |
pass |
|
) |
| |
调用 gree 成功后调用本函数向 SMTP 服务端发送身份认证命令
- 参数
-
user | {const char*} 用户账号,非空字符串 |
pass | {const char*} 用户账号密码,非空字符串 |
- 返回
- {bool} 是否成功
◆ close()
void acl::smtp_client::close |
( |
| ) |
|
◆ data_begin()
bool acl::smtp_client::data_begin |
( |
| ) |
|
调用 rcpt_to 或 send_envelope 成功调用本函数向 SMTP 服务端 DATA 命令,表明开始发送邮件数据
- 返回
- {bool} 命令操作是否成功 注:在调用本函数前,必须保证 SMTP 信封已经成功发送
◆ data_end()
bool acl::smtp_client::data_end |
( |
| ) |
|
邮件发送完毕(如调用:send_email)后,最后必须调用本函数告诉 SMTP 邮件服务器发送数据结束
- 返回
- {bool} 命令操作是否成功
◆ format()
bool acl::smtp_client::format |
( |
const char * |
fmt, |
|
|
|
... |
|
) |
| |
发送邮件体数据,可以循环调用本函数,但数据内容必须是严格的邮件格式
- 参数
-
- 返回
- {bool} 命令操作是否成功 注:在第一次调用本函数前,必须保证 SMTP 信封已经成功发送
◆ get_banner()
bool acl::smtp_client::get_banner |
( |
| ) |
|
第一次连接成功后需要调用本函数获得 SMTP 服务端的欢迎信息
- 返回
- {bool} 是否成功
◆ get_code()
int acl::smtp_client::get_code |
( |
| ) |
const |
获得上次 SMTP 交互过程服务端返回的状态码
- 返回
- {int}
◆ get_status()
const char* acl::smtp_client::get_status |
( |
| ) |
const |
获得上次 SMTP 交互过程服务端返回的状态信息
- 返回
- {const char*}
◆ get_stream()
◆ greet()
bool acl::smtp_client::greet |
( |
| ) |
|
调用 get_banner 成功后调用本函数向 SMTP 服务端发送 HELO/HELO 命令
- 返回
- {bool} 是否成功
◆ mail_from()
bool acl::smtp_client::mail_from |
( |
const char * |
from | ) |
|
调用 auth_login 成功后(如果无身份验证,则可以在 greet 成功后) 调用本函数向 SMTP 服务器发送 MAIL FROM 命令
- 参数
-
from | {const char*} 发件人的邮箱地址 |
- 返回
- {bool} 是否成功
◆ noop()
bool acl::smtp_client::noop |
( |
| ) |
|
NOOP 命令
- 返回
- {bool} 命令操作是否成功
◆ open()
bool acl::smtp_client::open |
( |
| ) |
|
连接远程 SMTP 服务器
- 返回
- {bool} 连接是否成功,若想使用 SSL 方式,则需要在类对象 初始化后调用 set_ssl 设置 SSL 通信方式
◆ quit()
bool acl::smtp_client::quit |
( |
| ) |
|
断开与邮件服务器的连接
- 返回
- {bool} 命令操作是否成功
◆ rcpt_to()
bool acl::smtp_client::rcpt_to |
( |
const char * |
to | ) |
|
调用 mail_from 成功后调用本函数向 SMTP 服务端发送 RCPT TO 命令, 指明一个收件人,可以多次本函数将邮件发送至多个收件人
- 参数
-
- 返回
- {bool} 是否成功
◆ reset()
bool acl::smtp_client::reset |
( |
| ) |
|
重置与邮件服务器的连接状态
- 返回
- {bool} 命令操作是否成功
◆ send()
bool acl::smtp_client::send |
( |
const mail_message & |
message, |
|
|
const char * |
email = NULL |
|
) |
| |
调用本函数发送邮件数据至邮件服务端,该函数会首先调用 send_envelop 发送信封,当 email 或 message.get_email() 非空时,则会调用发送邮件 过程;否则(即 email 和 message.get_email() 均为 NULL)则只发送 信封
- 参数
-
message | {const mail_messsage&} 邮件相关信息,必须提前构建好 |
email | {const char*} 非空时,优先使用此文件做为邮件体数据发送 |
- 返回
- {bool} 发送是否成功 注:如果 email 为 NULL 同时 messsage.get_email() 也为 NULL,则本 函数仅发送 SMTP 信封部分,用户还需要调用: data_begin-->write|format|vformat|send_file-->data_end 过程来发送邮件数据体
◆ send_email()
bool acl::smtp_client::send_email |
( |
const char * |
filepath | ) |
|
调用 data_begin 成功调用本函数向 SMTP 服务端发送一封完整的邮件, 需要给出邮件存储于磁盘上的路径
- 参数
-
filepath | {const char*} 邮件文件路径 |
- 返回
- {bool} 命令操作是否成功 注:在调用本函数前,必须保证 SMTP 信封已经成功发送
◆ send_envelope()
bool acl::smtp_client::send_envelope |
( |
const mail_message & |
message | ) |
|
在 SMTP 会话阶段仅发送邮件信封部分数据,应用调用此函数成功后, 还需要调用: 1、data_begin:开始发送邮件体指令 2、write/format/vformat/send_file:发送邮件数据 3、data_end:表示发送邮件体数据完毕
- 参数
-
- 返回
- {bool} 是否成功 注:本函数是 open/auth_login/mail_from/rcpt_to 发送信封过程的组合
◆ set_ssl()
设置 SSL 数据传输模式
- 参数
-
ssl_conf | {sslbase_conf*} 非空时,指定采用 SSL 传输模式 |
- 返回
- {smtp_client&}
◆ vformat()
bool acl::smtp_client::vformat |
( |
const char * |
fmt, |
|
|
va_list |
ap |
|
) |
| |
发送邮件体数据,可以循环调用本函数,但数据内容必须是严格的邮件格式
- 参数
-
fmt | {const char*} 变参格式 |
ap | {va_list} |
- 返回
- {bool} 命令操作是否成功 注:在第一次调用本函数前,必须保证 SMTP 信封已经成功发送
◆ write()
bool acl::smtp_client::write |
( |
const char * |
data, |
|
|
size_t |
len |
|
) |
| |
发送邮件体数据,可以循环调用本函数,但数据内容必须是严格的邮件格式
- 参数
-
data | {const char*} 邮件内容 |
len | {size_t} data 邮件数据长度 |
- 返回
- {bool} 命令操作是否成功 注:在第一次调用本函数前,必须保证 SMTP 信封已经成功发送
该类的文档由以下文件生成: