0

如果用户创建新事件,我会尝试从 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)

如果有人有任何可以帮助的想法,将不胜感激!

4

0 回答 0