Java MimeMessage电子邮件打印标题信息在正文中

时间:2011-03-04 17:42:46

标签: java email javamail email-headers

我继承的代码库是在电子邮件正文中打印出一些标题信息。这就是正在印刷的内容:

Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

如果我在创建消息后立即message.writeTo(System.out);,则会打印出上述文本。

是否有属性文件或某处指定此内容的东西?

看起来当邮件到达时,传出服务器已为这三个属性写了正确/不同的标题信息。

有关删除它的任何想法吗?

此外,这是整个功能:

private String sendConfirmationEmail (String to, String from, String subject, String body, boolean CCSender) {
  try
  {
    String smtpHost = Properties.smtp;      
    String fromAddress = from;
    String toAddress = to;

    Properties properties = System.getProperties();
    properties.put("mail.smtp.host", smtpHost);

    Session session = Session.getInstance(properties, null);

    MimeMessage message = new MimeMessage(session);

    message.setFrom(new InternetAddress(fromAddress));
    message.setRecipient(Message.RecipientType.TO,
            new InternetAddress(toAddress));

    message.setRecipient(Message.RecipientType.BCC,
            new InternetAddress(fromAddress));

    if (CCSender) {
      message.setRecipient(Message.RecipientType.CC,
              new InternetAddress(from));
    }
    message.setSubject(subject);
    message.setText(body);

    message.saveChanges();

    Transport.send(message);
    return "1:success";
  }
  catch(Exception e)
  {
    return "0:failure "+e.toString();
  }
}

1 个答案:

答案 0 :(得分:2)

这些属性通过java mail api公开,它们被设置为例如MimeMessage中的标题属性。

Message msg = new MimeMessage(session);
msg.setHeader("MIME-Version", "1.0" );
msg.setHeader("Content-Type", "text/plain; charset=us-ascii" );

邮件服务器可以根据本地策略更改标题。邮件服务器通信很可能使用例如邮件进行。 gzip压缩,其中需要另一组标头。

[编辑] 如果您发现source code for MimeMessage,您会看到某些标头设置为默认值,例如setHeader("MIME-Version", "1.0");

相关问题