我使用此类发送邮件但是现在我想添加附件如何添加它请帮助,如果你可以
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();
}
答案 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内容中,或者常见的附加。当然,您不必使用流畅的界面,它只是这个库的一个选项。