java - 如何从java打开outlook邮件,并使用html代码预先填充正文

标签 java outlook jakarta-mail

任何人都可以帮助我编写一个java代码,我希望将我的html代码添加到邮件正文中,并且应该弹出邮件客户端,以便人们可以输入收件人:并可以在需要时编辑正文。 我已经尝试过这段代码,但这个代码只是发送邮件。我想要的是我的邮件客户端应该弹出并已输入正文。

package you;

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Properties;

import javax.mail.BodyPart;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;


public class test1 {
    public void fnSendMail(String Status) throws IOException, InvalidFormatException, URISyntaxException {
    String htmlContent = null;
    if (Status.equals("Completed")) {


        htmlContent = "<html><br>Below is Test Execution Report.<br>Please find the attached for Detailed Results"
                + "<br><br><table border='1' cellpadding='2' cellspacing='3' width='40%' bordercolor='#999999' style='border-collapse: collapse;'>"
                + "<tr><th>SNo</th><th>Run_Method</th><th>abc_name</th><th>Execution_Status</th></tr>" +  "</table>"
                + "<br><br><br><h3 style='color:FireBrick;'>Please do not respond to this mail </h3></html>";
    } else {
        htmlContent = "<html><br>" + "<h3 style='color:FireBrick;'>Automation got failed due to some issue, hence "
                + "Please verify Maven Errors.<br><br>Execution Status till failure is attached.</h3></html>";
    }
    String from = "abc@cdf.com";
    String host = "x.y.z";
    Properties properties = System.getProperties();
    properties.setProperty("mail.smtp.host", host);
    Session session = Session.getDefaultInstance(properties);
    try {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));

        Multipart multipart = new MimeMultipart();
        BodyPart messageBodyText = new MimeBodyPart();
        message.setSubject("CSI API Automated Testing Report is " + Status);
        messageBodyText.setContent(htmlContent, "text/html");
        multipart.addBodyPart(messageBodyText);
        message.setContent(multipart);
        Transport.send(message);
    } catch (MessagingException mex) {
        mex.printStackTrace();
    }
    }
      public static void main(String[] args) {
          test1 test2= new test1();
            try {
                test2.fnSendMail("Completed");
                System.out.println("Email sent.");
            } catch (Exception ex) {
                System.out.println("Failed to sent email.");
                ex.printStackTrace();
            }
        }
}

任何其他方法也可以,但我只需要 java 和 javascript

最佳答案

您不必调用 Transport.send,而是必须调用 MimeMessage.saveChanges然后使用 MimeMessage.writeTo将其另存为“.eml”文件系统。然后使用 java.awt.Desktop.open 打开该文件启动电子邮件客户端。您的系统必须与 eml 有 mime 关联,否则 open 调用将失败。

如果 eml 的 O/S mime 类型未设置为 outlook.exe/eml %1 之类的内容,那么您可能必须求助于使用进程 API使用 eml 开关直接启动 Outlook。例如,如果您想预览 foo.eml 草稿消息,则命令将为:

outlook.exe/eml foo.eml

您必须在电子邮件客户端关闭后进行清理工作。

您还必须考虑将电子邮件保留在文件系统上的安全隐患。

关于java - 如何从java打开outlook邮件,并使用html代码预先填充正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32757811/

相关文章:

java - 552 抱歉,您的信封发件人域必须存在 (#5.7.1)

Java Mail 身份验证和连接

java - Log4j2 - 使用编程配置的 AwaitCompletionReliabilityStrategy 的 Stackoverflow

java - Java 中的这个 'String.format(".. .");' 是做什么的?

vba - 将电子邮件另存为文本文件的宏,以在规则中使用

c# - 获取 contact.LastName 时出现 System.Runtime.InteropServices.COMException (0x800706BE)

java - 发送失败异常: bad password

java - 多个运行者的junit实现

java - 正确地在图像上绘图

html - 旋转 Outlook 客户端正文中的图像