您现在的位置是:首页 > 文章详情

Qt开源作品28-邮件发送工具

日期:2020-06-04点击:420

一、前言

邮件发送工具是好多年前就开源出来的,核心就是调用最底层socket通信来实现的邮件发送程序,以前用C#写过,微软都封装好的,不知道底层是如何实现的,只知道调用方法,这次用C++实现了下,参考了很多网上的例子。
其实说白了,无非就是smtp协议的使用,这个是国际通用的标准,所以QQ邮箱和163邮箱都可以用,都可以互发,来自百度百科的解释:SMTP目前已是事实上的在Internet传输E-Mail的标准,是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确定是存在的),然后消息文本就传输了,可以自行搜索具体原理。
其他说明:163邮箱和126邮箱,发送端口都是25,不使用SSL协议,而QQ邮箱必须使用SSL协议,端口为465。如果是QQ邮箱发送的话,前提要在QQ邮箱设置中将smtp协议开通,否则发送不成功,我就困在这里半个小时,结果收到QQ邮箱发过来的一封邮件,你妹啊,默认QQ邮箱没有开启SMTP服务。

主要功能:

  1. 持主流邮箱例如163邮箱QQ邮箱的发送。
  2. 支持富文本发送,可以发送带有HTML格式的文本。
  3. 支持多个附件发送,附件可以是图片。

二、代码思路

void SendEmailThread::run() { while (!stopped) { int count = contents.count(); if (count > 0) { mutex.lock(); QString content = contents.takeFirst(); QString fileName = fileNames.takeFirst(); mutex.unlock(); QString result; QStringList list = sendEmailAddr.split("@"); QString tempSMTP = list.at(1).split(".").at(0); int tempPort = 25; //QQ邮箱端口号为465,必须启用SSL协议. if (tempSMTP.toUpper() == "QQ") { tempPort = 465; } SmtpClient smtp(QString("smtp.%1.com").arg(tempSMTP), tempPort, tempPort == 25 ? SmtpClient::TcpConnection : SmtpClient::SslConnection); smtp.setUser(sendEmailAddr); smtp.setPassword(sendEmailPwd); //构建邮件主题,包含发件人收件人附件等. MimeMessage message; message.setSender(new EmailAddress(sendEmailAddr)); //逐个添加收件人 QStringList receiver = receiveEmailAddr.split(';'); for (int i = 0; i < receiver.size(); i++) { message.addRecipient(new EmailAddress(receiver.at(i))); } //构建邮件标题 message.setSubject(emialTitle); //构建邮件正文 MimeHtml text; text.setHtml(content); message.addPart(&text); //构建附件-报警图像 if (fileName.length() > 0) { QStringList attas = fileName.split(";"); foreach (QString tempAtta, attas) { QFile *file = new QFile(tempAtta); if (file->exists()) { message.addPart(new MimeAttachment(file)); } } } if (!smtp.connectToHost()) { result = "邮件服务器连接失败"; } else { if (!smtp.login()) { result = "邮件用户登录失败"; } else { if (!smtp.sendMail(message)) { result = "邮件发送失败"; } else { result = "邮件发送成功"; } } } smtp.quit(); if (!result.isEmpty()) { emit receiveEmailResult(result); } msleep(1000); } msleep(100); } stopped = false; }

三、效果图

emailtool

四、开源主页

以上作品完整源码下载都在开源主页,会持续不断更新作品数量和质量,欢迎各位关注。

  1. 国内站点:https://gitee.com/feiyangqingyun/QWidgetDemo
  2. 国际站点:https://github.com/feiyangqingyun/QWidgetDemo
  3. 个人主页:https://blog.csdn.net/feiyangqingyun
  4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/
原文链接:https://yq.aliyun.com/articles/763868
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章