Sendmail使用java代码,无法添加正文

时间:2017-05-26 02:41:15

标签: java sendmail

public void sendMailWithPx() {
    try {
        Process p = Runtime.getRuntime().exec(new String[]{
                getPathSendMail(),
                "-t"
        });
        String base64File = encodeFileToBase64Binary("/Users/jacye/Downloads/test.pdf");//base64 file
        try (OutputStreamWriter osw = new OutputStreamWriter(p.getOutputStream(), "UTF8")) {
            osw.write("Content-Type: application/pdf\n");
            osw.write("From: yourmailtest@testmail.com\n");
            osw.write("To: yourmailtest@testmail.com\n");
            osw.write("Subject: Test send mmail\n");
            osw.write("CC: yourmailtest@testmail.com\n");
            osw.write("BCC: yourmailtest@testmail.com\n");
            osw.write("Content-Disposition: attachment; filename=test.pdf");
            osw.write("\n");
            osw.write("Content-Transfer-Encoding: base64");
            osw.write("\n");
            osw.write(base64File);
            osw.write("this is body");
        }
        p.waitFor();
    } catch (IOException | InterruptedException e) {
        log.error(null, e);
    }
}

private String getPathSendMail() throws IOException {
    Properties prop = new Properties();
    try (InputStream input = getClass().getClassLoader().getResourceAsStream(CONFIG_FILE)) {
        prop.load(input);
        return prop.getProperty("sendmail.path");
    }
}

我发送附件和正文的邮件,但我没有接收正文。

如何使用正文和附件发送邮件?

1 个答案:

答案 0 :(得分:1)

如果您需要发送包含正文和附件的邮件,则必须将其作为MIME Message发送。 您发送的邮件只有附件(PDF)。 我想你可以找到"这是身体"文本作为PDF的一部分,即使它可能无法由PDF查看器呈现。

一个简单的MIME Message看起来如下

  

来自:John Doe
  MIME版本:1.0
  内容类型:
  多部分/混合;           boundary =" XXXXboundary text"

     

这是MIME格式的多部分邮件。

     

- XXXXboundary text Content-Type:text / plain

     

这是正文

     

- XXXXboundary text Content-Type:text / plain;内容 - 处理:附件;           文件名="的test.txt"

     

这是附件文本

     

- XXXXboundary text -