如果用户创建新事件,我会尝试从 Qt 应用程序发送自动电子邮件。显然,目的是警告其他人有关此事件的信息。
我的问题实际上是发送电子邮件。我找到了这个BlueTiger9库。这是一个似乎可以工作的电子邮件发件人,但不幸的是不适合我,我目前正面临一个我无法解释的问题。
我把我的代码的以下部分我认为将有助于定义出了什么问题。如果还需要什么,请告诉我。
在我的 .pro 文件中:
LIBS += -L$$PWD/ -lSMTPEmail
我包含了一个包含所有其他头文件的文件,并且我也在我的项目中添加了库的所有头文件。
#ifndef SMTPMIME_H
#define SMTPMIME_H
#include "smtpclient.h"
#include "mimepart.h"
#include "mimehtml.h"
#include "mimeattachment.h"
#include "mimemessage.h"
#include "mimetext.h"
#include "mimeinlinefile.h"
#include "mimefile.h"
#endif // SMTPMIME_H
在包含的每个标头中,还包含以下代码:
#ifndef SMTPEXPORTS_H
#define SMTPEXPORTS_H
#ifdef SMTP_BUILD
#define SMTP_EXPORT Q_DECL_EXPORT
#else
#define SMTP_EXPORT Q_DECL_IMPORT
#endif
#endif // SMTPEXPORTS_H
然后我只是尝试使用发送简单电子邮件的示例(我只是添加了代理设置):
SmtpClient smtp("smtp.office365.com", 587, SmtpClient::TlsConnection);
smtp.setUser("USER_Off365");
smtp.setPassword("PASSWORD_Off365");
smtp.setAuthMethod(SmtpClient::AuthLogin);
QNetworkProxy proxy(QNetworkProxy::HttpProxy, "PROXY_ADD", PROXY_PORT, "PROXY_USER", "PROXY_PW");
smtp.getSocket()->setProxy(proxy);
MimeMessage message;
message.setSender(new EmailAddress("MY_ADDRESS", "MY_NAME"));
message.addRecipient(new EmailAddress("ADDRESS_TO", "A_NAME"));
message.setSubject("Subject");
MimeText text;
text.setText("Test");
message.addPart(&text);
if(smtp.connectToHost()){
if(smtp.login()){
if(smtp.sendMail(message)){
smtp.quit();
}
}
}
但我无法连接到 SMTP 服务器。我从套接字收到的错误是“与 HTTP 代理通信时出错”
尝试通过我的手机连接互联网,我可以进行下一步,但我仍然遇到身份验证问题。
以防万一,我需要使用 Office365 SMTP 服务器,并且连接到它的设置可在此页面上找到。(smtp.office365.com / 587 显式 / TLS v1-1.2)
如果有人有任何可以帮助的想法,将不胜感激!