Qt5.5 使用smtp发邮件的各种坑
来源:互联网 发布:电子画板手绘软件 编辑:程序博客网 时间:2024/05/22 17:51
本人刚开始学习C++,用的是Qt5.5的IED,经过了两天的学习和查找资料,终于成功发了第一封邮件。以163邮箱为例,简单总结一下。
1、设置邮箱
这一步比较关键,要开通smtp服务,在开通的过程中会让你输入一个邮箱客户端授权码,这个才是你后面要用到的密码,而不是你登陆邮箱的密码;
2、找代码
也许你会问我,为什么不自己写呢?还是不太懂smtp,先看看别人的怎么写。
先了解了一下邮件是怎么被发出去的。
telnet命令发送邮件
打开cmd.
1. 输入 telnet smtp.163.com 25 回车
我试验了好几个邮箱服务器,大都有严厉的反垃圾邮件系统,导致邮件发不出去,幸好163的邮箱竟然可以.TX威武呀.smtp的协议端口为25.
2. 输入 HELO smtp.163.com 回车
我搜集的一些资料中既有使用helo又有使用ehlo的,结果还使我纠结了好久,后来又google才知道,原来都可以.这句应该是与服务器打招呼.如果返回250表示服务器准备就绪,可以进行下一步了.
3. 输入 AUTH LOGIN 回车
这是指定登录的模式,这句应该是一般模式.返回334就可以进行下一步了.
4. 输入 经过base64加密的你的账户名,比如你的qq号是123456,就去百度下 base64加密,然后找个地方将你的q号加密,copy到命令行回车返回334,下一步是输入经过base64加密过的你的密码
5. 输入 你的base64加密过的密码,方法同上,然后服务器返回235,表示验证通过,可以进行下一步了.
6. 输入 mail from:<****@qq.com> 这里写你的qq邮箱,服务器返回250.
7. 输入 rcpt to:<****@qq.com> 这里写你要发送给的qq邮箱,貌似其他邮箱不可以,服务器返回250,下一步
8. 输入 data,表示开始传送数据,服务器返回354
9. 输入 subject:你的主题此处服务器无回显
10. 输入 此处什么也不用写,直接回车换行,作为主题与正文的分界此处服务器无回显
11. 输入 在这里写你的正文就可以了此处服务器也无回显
12. 输入 .对,就是一个英文句号,表示数据传送完毕,服务器返回250
13. 输入 quit服务器返回221,就安了,完成了,看看邮件收到了没.
3、如果你发成功了,就可以考虑如何用代码实现这个发邮件的过程。
网上找了一个比较靠谱的发邮件的工具类,可以拿来用,叫 sendemailapi (http://messyink.cn/download/sendemailapi.zip)。
当然有些代码还是需要写的~
//实例化发送邮件对象SmtpClient smtp("smtp.163.com", 25, SmtpClient::TcpConnection);smtp.setUser("******@163.com");smtp.setPassword("******");//构建邮件主题,包含发件人收件人附件等.MimeMessage message;message.setSender(new EmailAddress("******@163.com"));//逐个添加收件人message.addRecipient(new EmailAddress("******@163.com"));//构建邮件标题message.setSubject(QStringLiteral("系统检测"));//构建邮件正文MimeText text;text.setText(QStringLiteral("测试简单文本发送!"));message.addPart(&text);if (!smtp.connectToHost()){ qDebug() << QStringLiteral("服务器连接失败!");}if (!smtp.login()){ qDebug() << QStringLiteral("用户登录失败!");}if (!smtp.sendMail(message)){ qDebug() << QStringLiteral("邮件发送失败!");}else{ qDebug() << QStringLiteral("邮件发送成功!");}smtp.quit();
4、到了这一步,确实是把邮件发出来了。但是一看邮件顿时惊呆了。竟然全都是乱码,最后通过朋友的帮助,在所有的汉字上加上了QStringLiteral(),结果才算好了。
- Qt5.5 使用smtp发邮件的各种坑
- flex使用smtp协议发邮件
- 使用python smtp发邮件代码
- perl 使用Net::SMTP 发邮件
- 使用telnet登陆smtp服务发邮件
- Python 使用SMTP 实现发邮件功能
- 使用telnet登录smtp服务发邮件
- 使用telnet登陆smtp服务发邮件
- 简单的smtp发邮件类
- 发邮件的协议: smtp 协议:
- smtp发邮件
- SMTP发邮件
- telnet Smtp发邮件
- smtp发邮件(C#)
- smtp邮件代发
- 利用smtp发邮件
- smtp 发邮件
- 利用smtp发邮件
- Python中通过csv的writerow输出多余空行+py2.x &py3.兼容
- Python判断一个文件夹内哪些文件是图片
- machine learning normal equation
- 机器学习实战-14利用SVD简化数据-改进推荐系统
- 一中OJ #1176 立方数分解[尼科梅彻斯定理] | 数论 + 枚举 | 解题报告
- Qt5.5 使用smtp发邮件的各种坑
- DOM、鼠标、表单、多媒体事件
- springmvc 数据绑定
- Linux CentOS7 简单了解
- 什么是P问题、NP问题和NPC问题
- Spring——使用profile为不同环境创建bean
- @InitBinder注解使用
- llvm存取fs段内容
- 18.关于pom文件中Tomcat插件的设置