java windows桌面邮件主题字符串错误

标签 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").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/

相关文章:

java - while 循环循环所有内容但不保存

windows - 在 Windows 上记录 AWS EC2 UserData 脚本输出

node.js - 没有嵌套 node_modules 的 NPM 安装包

python - 适用于Python版本3.9的Numpy安装

python : send data of form to one email address

php - 强制 phpmailer 发送空邮件

java - 通过java代码导出oracle数据库数据

Java fork-join 性能

java - 创建 Java 代理与调用 Notes API - Louts Notes

ruby-on-rails - 设计是否适用于具有相同帐户的多个 email_id ?