0

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

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();
  }
}
4

1 回答 1

2

这些属性通过 java 邮件 api 公开,在例如MimeMessage中设置为标题属性。

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

邮件服务器可以根据其本地策略依次更改标头。邮件服务器之间的通信可以很好地使用例如gzip需要另一组标题的压缩来执行。

[编辑]如果您观察源代码,MimeMessage您会看到一些标头设置为默认值,例如setHeader("MIME-Version", "1.0");.

于 2011-03-04T18:04:59.447 回答