java windows桌面邮件主题字符串错误
我想通过java发送电子邮件。 代码是:java windows桌面邮件主题字符串错误,java,windows,email,outlook,Java,Windows,Email,Outlook,我想通过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").re
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编写的内容,但字符串文本完全错误。
如果我注释掉replace方法,它完全不起作用。
在Linux上它工作得很好
她是XX夫人
知识%20ipsum%20dolor%20sit%20amet%20consetetur%20adipscing%20elitr%20ed%20diam%20nonumy%20eirmod%20temporate%20invidunt%20ut%20labor%20et%20dolore%20magna%20aliquyam%20erat%20ed%20diam%20voluptua%20At%20vero%20eos%20et%20et%20et%20justo%20duo%20dolores%20et%20et%20ea%20era%20reum%20clita%20bergugren,%20no%20sea%20takimata%20sanctus%20est%20Lorem%20ipsum%20dolor%20sit%20amet.%20Lorem%20ipsum%20dolor%20sit%20amet%20CONSETETETUR%20ADIPSTR%20ELITER%20ED%20DIAME%20NONUMMY%20eirmod%20TEMPORT%20ut%20et%20et%20dolore%20AGNA%20aliquyam%20erat,%20ed%20diam%20voluptua.%20At%20vero%20eos%20et%20accusam%20et%20justo%20duo%20dolores%20et%20ea%20ea%20rebum.%20tet%20clita%20kasd%20gubergren%20no%20ea%20takimata%20est%20Lorem%20ipsum%20dolor%20it%20amet
麻省理工学院弗伦德利希学院
布拉布拉
你有什么想法吗?你的替代品看起来不对劲。你正在做:
text.replace(" ", "%20")
.replace("\n", "%0D%0A")
.replace("\"", "\u00A8")
.replace("%", "%25")
; // and so on
如果您有空间,则在第一次替换中,将其替换为%20。然后在第四次替换中,将所有百分号替换为%25。对于空间,这将导致以下替换:
→ %20→ %2520
这将导致您看到的输出。如果要继续使用手工编制的URL编码机制,请先替换百分比,然后替换其他字符
不过,使用Java或番石榴之类的东西会更容易