java - 使用 telnet 时 MimeMessage 为空?

标签 java jakarta-mail

我从输入流创建一个 javamail MimeMessage:

MimeMessage message = new MimeMessage(session, data);
Object content = message.getContent();
log.debug("content: "+content);

当我使用雷鸟发送电子邮件时,内容对象包含电子邮件文本。

但是当我使用 telnet 发送电子邮件时,内容对象是空的。

220 192.168.2.3 ESMTP SubEthaSMTP 3.1.7
mail from:test@test.com
250 Ok
rcpt to:burb@burb.com
250 Ok
data
354 End data with <CR><LF>.<CR><LF>
test1
test2
test3
.
250 Ok
quit
221 Bye


Connection to host lost.

但是我可以通过手动读取输入流来获取内容:

public String convertStreamToString(InputStream is) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return sb.toString();
}

是否可以检测何时使用MimeMessage以及何时使用convertStreamToString?

最佳答案

您没有通过 SMTP 正确发送邮件。消息数据通常是一组键/值对,后跟换行符,然后是内容。您的消息显示没有内容的原因是您的数据似乎都是标题。

您的 telnet session 应如下所示:

220 192.168.2.3 ESMTP SubEthaSMTP 3.1.7
mail from:test@test.com
250 Ok
rcpt to:burb@burb.com
250 Ok
data
354 End data with <CR><LF>.<CR><LF>
From: Test <test@test.com>
To: Burb <burb@burb.com>
Subject: My fantastic message

test1
test2
test3
.
250 Ok
quit
221 Bye

关于java - 使用 telnet 时 MimeMessage 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37073905/

相关文章:

java - 删除android中的html标签

java - 使用开始和结束偏移突出显示 JTextArea 中特定行上的文本

java - JBoss 配置文件

java - 从 Java Web 应用程序发送邮件

Java SMTP 邮件 - 连接超时错误

jboss - 配置jboss发送电子邮件

java - 如何安装libgdx项目

java - 在数组中查找空字符串

java - 为什么 JavaMail 使用 System.getProperties() ?

java - 根据到达日期对 Imap 邮件进行排序