C++发送邮件

        C++ 发送邮件

    在许多应用程序中,都会或多或少地用到邮件发送程序。本文首先介绍发送邮件必须用到的协议SMTP,然后给出用C++写的一个邮件发送类。

    邮件发送要用到邮件服务器和一个邮箱账户,这样你就可以用本文的demo程序进行邮件发送了。

    邮件发送协议用SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,而邮件的接收用POP3协议。

    在邮件发送程序中,我们实际用到的是SMTP命令,如下表格所示:


SMTP 命令
命令描述
DATA开始信息写作
EXPN<string>验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELO<domain>向服务器标识用户身份,返回邮件服务器身份
HELP<command>查询服务器支持什么命令,返回命令中的信息
MAIL FROM<host>在主机上初始化一个邮件会话
NOOP无操作,服务器应响应OK
QUIT终止邮件会话
RCPT TO<user>标识单个的邮件接收人;常在MAIL命令后面可有多个rcpt to:
RSET重置会话,当前传输被取消
SAML FROM<host>发送邮件到用户终端和邮箱
SEND FROM<host>发送邮件到用户终端
SOML FROM<host>发送邮件到用户终端或邮箱
TURN接收端和发送端交换角色
VRFY<user>用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令

    SMTP工作过程:

    1. 建立与邮件服务器之间的TCP连接。

    2. 客户端发送HELO命令,服务器返回250 ok。

    3. 客户端发送AUTH LOGIN, 传输用户名和密码到服务器,登陆邮件服务器。(注意:一般要求用户名和密码用BASE64加密)

    4. 发送MAIL FROM命令,初始一个邮件会话。

    5. 发送RCPT TO,表明收件人。

    6. 发送DATA,表示开始发送信息。

    7. 发送QUIT,退出。


    在每条命令发送结束,末尾加上\r\n,即<CRLF>,回车键,表示此条命令的结束。

    C++发送源代码详见https://github.com/duankai/mail

           其中,Base64.h是用来对用户名和密码进行加密的,mail.h定义了一些退出代码。如下是GosMail类的定义:

class GosMail
{
public:
	static GosMail * GetInstance();
	int SendMail(USER_INFO_T * pstUserInfo, MAIL_INFO_T * pstMailInfo);
	bool GetStatus();
	~GosMail();
private:
	GosMail();
	bool Init();
	void GetMailSocket(int iPort = 25);
	void FreeResource();
	int InitMailBox();
	int Login(USER_INFO_T * pstUserInfo);
	int SendContent(MAIL_INFO_T * pstMailInfo);
	int QuitEmailBox();
public:
private:
	SOCKET           m_socket;
	SOCKADDR_IN      m_sockAddr;
	bool             m_mailStatus;
	static GosMail * m_mailInst;
	int              m_iSockAddrLen;
	char             recvBuff[1024];
	char             sendBuff[1024 * 3];
};
     本文介绍的内容用C++实现了一个简单的邮件发送类,将来会将邮件接收类也补充完整,欢迎大家提出意见和指出不足之处。
   






  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"C 发送邮件 QQ" 是指使用 C 语言编写程序来实现通过 QQ 邮箱发送邮件的功能。以下是一个简单的解释: QQ 邮箱是腾讯公司提供的一种电子邮件服务。要通过 C 语言发送 QQ 邮件,需要使用一些相关的库和协议来进行邮件发送和接收操作。 C 语言本身并不直接支持邮件发送功能,但可以利用第三方库来实现。一个常用的库是 libcurl,它是一个强大且广泛使用的网络传输库,可以用来发送 HTTP 请求。在 C 语言中,可以使用 libcurl 提供的接口来发送 HTTP 请求来执行发送邮件的操作。 首先,需要在 C 代码中包含 libcurl 的头文件,并链接对应的库文件。然后,通过初始化 libcurl 的函数来创建一个会话,设置相应的选项,如收件人、发件人、主题、正文内容等。接下来,使用 libcurl 提供的函数发送 HTTP POST 请求,将邮件内容以及相关的身份验证参数传递给 QQ 邮箱的服务器地址。最后,根据 QQ 邮箱服务器的响应,判断邮件发送是否成功,并进行相应的处理。 需要注意的是,发送邮箱是一个涉及到网络传输和身份验证的操作,需要保证网络连接的稳定性、合法的身份验证信息以及可信的邮件内容,以避免被视为垃圾邮件或滥用邮件发送功能。 综上所述,通过使用 C 语言编写包含 libcurl 库的程序,可以实现通过 QQ 邮箱发送邮件的功能。但这只是一个简单的示例,实际开发中需要考虑更多的细节和安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值