0

我正在尝试以 HTML 格式发送电子邮件。它适用于文本/纯文本。但是当我将内容类型设置为 text/html 时,邮件没有被传输(没有抛出异常,但我也没有收到电子邮件)。以下是我的代码。

public void postMail() throws Exception {
            boolean debug = false;

            Properties props = new Properties();
            props.put("mail.smtp.host", smtpServer);
            props.put("mail.smtp.port", smtpServerPort);
            props.put("mail.smtp.auth", "false");
            props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.socketFactory.fallback","false");
            lgr.debug(lgr.isDebugEnabled()?"SMTP Server --->" + smtpServer : null);
            Session session = Session.getInstance(props, null);
            session.setDebug(debug);

            Message msg = new MimeMessage(session);

            InternetAddress addressFrom = new InternetAddress(from);
            msg.setFrom(addressFrom);
            // Here is some logic to add TO and CC and BCC
            msg.setSubject(subject);
            //    writer.println("Subject : " + subject);
            lgr.debug(lgr.isDebugEnabled()?"Subject : " + subject : null);
            msg.setContent(message, "text/html");
            Transport.send(msg);
            lgr.info(lgr.isInfoEnabled() ?"Mail sent": null);
}

在这方面的任何帮助将不胜感激。

4

2 回答 2

1

摆脱套接字工厂的东西,你不需要它。

当您将 debug 设置为 true 时,您是否在调试输出中看到任何错误?或者您的邮件服务器是否毫无怨言地接受了邮件?如果没有错误,那么问题很可能是收件人的邮件服务器认为您的邮件是垃圾邮件,尽管您的简单测试邮件似乎不太可能。

您是否尝试过发送给不同的收件人,尤其是使用不同邮件服务器的不同收件人?找出问题出在收件人的邮件服务器还是您用于发送的邮件服务器会很有用。

于 2013-04-01T18:25:46.653 回答
0

我曾经遇到过类似的问题。我发现问题在于包含单引号的 html 内容。

作为测试,尝试使用 text/html 格式发送(简单单词)/(根本不带引号的简单 html)作为消息。如果可行,您可能可以修改您的 html 消息以仅包含双引号。

希望有帮助!

于 2013-04-01T14:51:00.500 回答