Qt5.5 使用smtp发邮件的各种坑

1、设置邮箱

这一步比较关键,要开通smtp服务,在开通的过程中会让你输入一个邮箱客户端授权码,这个才是你后面要用到的密码,而不是你登陆邮箱的密码;

2、找代码

也许你会问我,为什么不自己写呢?还是不太懂smtp,先看看别人的怎么写。

先了解了一下邮件是怎么被发出去的。

telnet命令发送邮件

打开cmd.

  1. 输入 telnet smtp.163.com 25 回车

我试验了好几个邮箱服务器,大都有严厉的反垃圾邮件系统,导致邮件发不出去,幸好163的邮箱竟然可以.TX威武呀.smtp的协议端口为25.

  1. 输入 HELO smtp.163.com 回车

我搜集的一些资料中既有使用helo又有使用ehlo的,结果还使我纠结了好久,后来又google才知道,原来都可以.这句应该是与服务器打招呼.如果返回250表示服务器准备就绪,可以进行下一步了.

  1. 输入 AUTH LOGIN 回车

这是指定登录的模式,这句应该是一般模式.返回334就可以进行下一步了.

  1. 输入 经过base64加密的你的账户名,比如你的qq号是123456,就去百度下 base64加密,然后找个地方将你的q号加密,copy到命令行回车返回334,下一步是输入经过base64加密过的你的密码

  2. 输入 你的base64加密过的密码,方法同上,然后服务器返回235,表示验证通过,可以进行下一步了.

  3. 输入 mail from:****@qq.com 这里写你的qq邮箱,服务器返回250.

  4. 输入 rcpt to:****@qq.com 这里写你要发送给的qq邮箱,貌似其他邮箱不可以,服务器返回250,下一步

  5. 输入 data,表示开始传送数据,服务器返回354

  6. 输入 subject:你的主题此处服务器无回显

  7. 输入 此处什么也不用写,直接回车换行,作为主题与正文的分界此处服务器无回显

  8. 输入 在这里写你的正文就可以了此处服务器也无回显

  9. 输入 .对,就是一个英文句号,表示数据传送完毕,服务器返回250

  10. 输入 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(),结果才算好了。

参考:

http://blog.csdn.net/etwdone/article/details/52995496

http://www.qtcn.org/bbs/read-htm-tid-56050.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CTA定量交易策略

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值