如何使用sendmail发送附件

时间:2013-03-01 07:33:23

标签: java email

我使用此类发送邮件但是现在我想添加附件如何添加它请帮助,如果你可以

public static void sendMail(String subject, String body, String toEmail, String ccEmail, String fromMail)
                throws IOException {
            Random generator = new Random();
            int r = Math.abs(generator.nextInt());

            body = body.replaceAll("(\\r|\\n)", "");
            body = body.replaceAll("\"", "\\\\\"");
            body = body.replaceAll("&", "\\\\&");
            body = body.replaceAll("©", "\\\\©");
            //body = body.replaceAll("> <", ">\\\n<");

            if(CommonUtils.emptyString(fromMail))
                fromMail = "No Reply <iotasol@pcc.com>";
            else
                fromMail = "No Reply <"+fromMail+">";

            ProcessBuilder processBuilder = new ProcessBuilder(
                    ApplicationProperties.MAIL_SENDER_SH_PATH, CommonUtils.getEmptyStringForNull(subject), CommonUtils.getEmptyStringForNull(body),
                    toEmail, ccEmail, String.valueOf(r), fromMail);
            processBuilder.start();
        }

3 个答案:

答案 0 :(得分:0)

如果你需要发送图像的想法:使其与base64内联。

附件取决于使用的库,使用的邮件服务器等。

答案 1 :(得分:0)

       MimeBodyPart messageBodyPart = new MimeBodyPart();
       File file = new File("somefile.txt");
       if (file.exists()) {
           DataSource source = new FileDataSource("somefile.txt");
           messageBodyPart.setDataHandler(new DataHandler(source));
           messageBodyPart.setFileName(file.getName());
           multipart.addBodyPart(messageBodyPart);
       }

答案 2 :(得分:0)

从您的代码示例中,我可以看出您正在使用外部邮件程序发送电子邮件。您创建 ProcessBuilder 并调用用于发送电子邮件的操作系统工具。

我不会使用这个解决方案。首先,它取决于操作系统(在Windows上没有mail命令)。其次,这不是有效的;因为你为此创建了外部流程(想象一下发送许多电子邮件)。

相反,请尝试在java中使用现有的邮件解决方案(您需要:mail.jar和activation.jar)。有了它,您可以直接从您的应用程序发送电子邮件,而不是依赖于外部工具。

使用邮件 Java库,您可以执行所需的一切,您也可以查看Jodd Email。这是一个小而方便的java邮件库包装器,可以帮助您发送电子邮件和附件。正如您在“使用流畅的API的电子邮件”部分中所看到的,您可以执行以下操作:

Email email = Email.create()
    .from("from@foo.org")
    .to("to@bar.com")
    .subject("test")
    .addText("Hello!")
    .addHtml(
        "<html><body><h1>Hey!</h1>" +
        "<img src='cid:c.png'><h2>Hay!</h2></body></html>")
    .embed(attachment().bytes(new File("d:\\c.png")))
    .attach(attachment().file("d:\\b.jpg"));

在此示例中,您可以看到两种如何附加文件的方式:嵌入它们,以便它们显示在HTML内容中,或者常见的附加。当然,您不必使用流畅的界面,它只是这个库的一个选项。