我想通过java发送电子邮件。 代码是:
ueberschrift = table.getValueAt(i, 0).toString();
text = table.getValueAt(i, 1).toString();
ueberschrift = ueberschrift.replace(" ", "%20")
.replace("\n", "%0D%0A").replace("\"", "\u00A8")
.replace("%", "%25").replace(";", "%3B")
.replace("?", "%3F").replace("&", "%24")
.replace("$", "%26").replace("<", "%3C")
.replace(">", "%3E").replace("~", "%7E")
.replace("\\", "\u00A8");
text = text.replace(" ", "%20").replace("\n", "%0D%0A")
.replace("\"", "\u00A8").replace("%", "%25")
.replace(";", "%3B").replace("?", "%3F")
.replace("&", "%24").replace("$", "%26")
.replace("<", "%3C").replace(">", "%3E")
.replace("~", "%7E").replace("\\", "\u00A8");
System.out.println(text);
if (anrede.equals("Frau")) {
einleitung = "Sehr%20geehrte%20";
} else {
einleitung = "Sehr%20geehrter%20";
}
text = einleitung
+ anrede
+ "%20"
+ name
+ ",%20%0D%0A%0D%0A"
+ text
+ "%0D%0A%0D%0AMit%20freundlichen%20Gr\u00fc\u00dfen%0D%0A"
+ Login.vorname + "%20" + Login.nachname;
try {
Desktop.getDesktop().mail(
URI.create("mailto:" + mail + "?subject="
+ ueberschrift + "&body=" + text));
} catch (IOException e1) {
e1.printStackTrace();
}
Outlook 打开一个电子邮件窗口,其开头和结尾都是正确的(我用 java 编写的),但字符串 text
完全错误。
如果我注释掉替换方法,它完全不起作用。
在 Linux 上它运行良好!
Sehr geehrte Frau XX,
Lorem%20ipsum%20dolor%20sit%20amet、%20consetetur%20sadipscing%20elitr、%20sed%20diam%20nonumy%20eirmod%20tempor%20invidunt%20ut%20labore%20et%20dolore%20magna%20aliquyam%20erat、%20s编辑% 20diam%20voluptua.%20At%20vero%20eos%20et%20accusam%20et%20justo%20duo%20dolores%20et%20ea%20rebum.%20Stet%20clita%20kasd%20gubergren,%20no%20sea%20takimata%20sanctus%20est%2 0洛雷姆%20ipsum%20dolor%20sit%20amet.%20Lorem%20ipsum%20dolor%20sit%20amet,%20consetetur%20sadipscing%20elitr,%20sed%20diam%20nonumy%20eirmod%20tempor%20invidunt%20ut%20labore%20et%20dolore %20麦格纳% 20aliquyam%20erat,%20sed%20diam%20voluptua.%20At%20vero%20eos%20et%20accusam%20et%20justo%20duo%20dolores%20et%20ea%20rebum.%20Stet%20clita%20kasd%20gubergren,%20no%20sea% 20takimata%20sanctus%20est%20Lorem%20ipsum%20dolor%20sit%20amet。
Mit freundlichen Grüßen 巴拉巴拉
你有什么想法吗?
最佳答案
您的替代品看起来不正确。你正在做:
text.replace(" ", "%20")
.replace("\n", "%0D%0A")
.replace("\"", "\u00A8")
.replace("%", "%25")
; // and so on
如果有空格,请在第一次替换中将其替换为 %20
。然后在第四次替换中,将所有百分号替换为 %25
。对于空间,这将导致以下替换:
""
→ "%20"
→ "%2520"
这会产生您所看到的输出。如果您想继续使用手工制作的 URL 编码机制,请先替换百分比,然后再替换其他字符。
然而,使用 Java 的 URLEncoder
之类的东西会更容易。 ,或 Guava 的UrlEscapers
。
关于java windows桌面邮件主题字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25545085/