QT---邮件发送

来源:互联网 发布:天刀焰灵姬捏脸数据 编辑:程序博客网 时间:2024/06/05 20:34

最近用到了这个功能,用于验证登陆~为此在网上找了好久,发现这方面的问答并不多!唯独这篇的解答实在。原文传送

1、首先选定自己的发送方的邮箱,无论是163还是qq邮箱等,首先都得开通SMTP服务;以163为例:

这里写图片描述
开启之后会收到一个授权码(自己设置的),在之后的登陆处使用的并不是邮箱密码,而是这个授权码。

2、准备好sendemailapi文件夹放置项目源文件目录下,里面存放的公开的第三方的支持发送附件和富文本的MIME协议文件,拖进一个PushButton用以测试,右击项目文件点击“Add Existing Directory” 把sendemailapi添加进来。记得添加–>这里写图片描述

这里写图片描述

3、至于这个槽怎么写 ,上面那篇文章写的很清楚了,Qt5 版本可能不支持toAscii(),可以用toLatin1()代替。
4、

 SmtpClient smtp("smtp.163.com",                    25,                   SmtpClient::TcpConnection);// SmtpClient::SslConnection    smtp.setUser("*******@163.com");    smtp.setPassword("");    //依次是服务器,端口,传输协议,邮箱名,以及上面提到的授权码
//构建邮件主题,包含发件人收件人附件等.MimeMessage message;message.setSender(new EmailAddress("*******@163.com"));//逐个添加收件人    message.addRecipient(new EmailAddress("×××××××@163.com"));//添加多个可利用循环//构建邮件标题message.setSubject("××××××");//构建邮件正文//HTML格式

// MimeHtml text;
// text.setHtml(ui->txtContent->toHtml());

//如果直接发送简单文本,使用以下方法   MimeText text;   text.setText("");message.addPart(&text);//构建附件QString atta="";if (atta!=""){    QStringList attas=atta.split(";");    foreach (QString tempAtta, attas) {        QFile *file=new QFile(tempAtta);        if (file->exists()){            message.addPart(new MimeAttachment(file));        }    }

}

if (!smtp.connectToHost()){    QMessageBox::critical(this,"错误","服务器连接失败!");    return;}if (!smtp.login()){    QMessageBox::critical(this,"错误","用户登录失败!");    return;}if (!smtp.sendMail(message)){    QMessageBox::critical(this,"错误","邮件发送失败!");    return;}else{    QMessageBox::information(this,"错误","邮件发送成功!");}smtp.quit();

sendemailapi文件下载


0 0