gpt4 book ai didi

java - 使用默认邮件客户端从 Java 发送电子邮件

转载 作者:行者123 更新时间:2023-11-30 02:04:11 24 4
gpt4 key购买 nike

我有 Java 代码,应该发送电子邮件。默认邮件客户端可以正确打开,收件人和主题也已顺利设置,但正文未设置。没有显示尸体。这是我的代码:

public void emailOhneStandort() throws URISyntaxException {

try {

composeEmail("benjamin.koubik@daimler.com", "Thanks for the snippet!",
"Hello Raffael,\r\nthis mail was initiated by Java.");
} catch (Exception err) {
err.printStackTrace();
}
System.out.println("Done!");
}

public static void composeEmail(String receiver, String subject, String body) throws Exception {

String mailto = "mailTo:" + receiver;
mailto += "?subject=" + uriEncode(subject);
mailto += "&body=" + uriEncode(body);

String cmd = "";
String os = System.getProperty("os.name").toLowerCase();
if (os.contains("win")) {
cmd = "cmd.exe /c start " + mailto;
} else if (os.contains("osx")) {
cmd = "open " + mailto;
} else if (os.contains("nix") || os.contains("aix") || os.contains("nux")) {
cmd = "xdg-open " + mailto;
}
// Call default mail client with paramters
Runtime.getRuntime().exec(cmd);

}

private static String uriEncode(String in) {
String out = new String();
for (char ch : in.toCharArray()) {
out += Character.isLetterOrDigit(ch) ? ch : String.format("%%%02X", (int) ch);
}
return out;
}

最佳答案

通过在 Windows 上尝试,我发现我需要使用 ^ 转义 &

所以,如果我这样做:

C:\>start mailto:test@example.com?subject=foo&body=bar

我收到以下错误:

'body' is not recognized as an internal or external command, operable program or batch file.

我的电子邮件客户端打开时填充了主题,但没有填充正文。

如果我这样做:

C:\>start mailto:test@example.com?subject=foo^&body=bar

然后它就会按预期工作。

我敢说在其他环境中也会发生同样的情况,但目前无法测试。

根据记录,似乎值得补充的是,这是一个有点奇怪的要求,如果您正在为生产代码所做的事情将被除您之外的任何人使用,那么这可能不是最好的方法!

关于java - 使用默认邮件客户端从 Java 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51839551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com