UTF-8 字符集不适用于 javax.mail

2023-12-13

我用过Java 邮件 API,用于发送电子邮件。我正在使用联系人公式发送输入,该输入必须发送到特定的电子邮件。

尽管我是丹麦人,但电子邮件发送没有问题,因此我需要在主题和电子邮件文本中使用三个丹麦字符,即“æ”、“ø”和“å”。

因此,我发现我可以使用 UTF-8 字符编码来提供这些字符,但是当我的邮件发送时,我只看到一些奇怪的字母 - 'ã¸'、'ã¸' 和 'ã¥' - 而不是丹麦字母 - 'æ'、'ø' 和 'å'。

我发送电子邮件的方法如下所示:

public void sendEmail(String name, String fromEmail, String subject, String message) throws AddressException, MessagingException, UnsupportedEncodingException, SendFailedException
{
    //Set Mail properties
    Properties props = System.getProperties();
    props.setProperty("mail.smtp.starttls.enable", "true");
    props.setProperty("mail.smtp.host", "smtp.gmail.com");
    props.setProperty("mail.smtp.socketFactory.port", "465");
    props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.setProperty("mail.smtp.auth", "true");
    props.setProperty("mail.smtp.port", "465");
    Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("my_username", "my_password");
        }
    });

    //Create the email with variable input
    MimeMessage mimeMessage = new MimeMessage(session);
    mimeMessage.setHeader("Content-Type", "text/plain; charset=UTF-8");
    mimeMessage.setFrom(new InternetAddress(fromEmail, name));
    mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("my_email"));
    mimeMessage.setSubject(subject, "utf-8");
    mimeMessage.setContent(message, "text/plain");

    //Send the email
    Transport.send(mimeMessage);
}

请帮助我找出如何纠正这个“错误”。


对于所有电子邮件

有几个与邮件相关的系统属性,这可能可以简化您的代码。我实际上正在谈论这个特定的属性:"mail.mime.charset".

The mail.mime.charset可以使用系统属性指定默认的 MIME 字符集用于未另行指定字符集的编码单词和文本部分。通常,默认的 MIME 字符集源自默认的 Java 字符集,如file.encoding系统属性。大多数应用程序不需要显式设置默认 MIME 字符集。如果用于邮件消息的默认 MIME 字符集与用于系统上存储的文件的字符集不同,则应设置此属性。

正如您在上面所读到的,默认情况下没有值mail.mime.charset和文件编码(file.encoding属性)被使用。

对于特定的电子邮件

但是,如果您想为特定电子邮件指定特定编码,那么您可能应该使用 2 参数setSubject(subject,charset) and setText(text,charset)方法。

如果这不起作用,那么您的输入可能在达到这一点之前就已经损坏了。换句话说,您可能使用了错误的编码来收集数据.

Mime 类型很复杂

The setContent(content, "UTF-8")(正如其他消息来源声称的那样)是行不通的。看看这个方法的签名:setContent(Object content, String mimetype). Mime 类型和字符集是两个完全不同的东西。恕我直言,你真的应该使用其中之一setText(...)带有字符集参数的方法。

但如果你坚持使用 mimetype 来设置字符集setContent(content,mimetype),然后使用正确的格式。 (不只是"UTF-8",但是像"text/plain; charset=UTF-8")。但更重要的是,请注意,每种 mime 类型都有自己的处理字符集的方式。

  • 如指定RFC-2046默认字符集为text/plain is US-ASCII,但可以使用附加的字符集参数来推翻。
  • 然而,在RFC-6657明确表示text/xmltype 使用消息内容确定字符集。这里将忽略字符集参数。
  • And in RFC-2854据说text/html实际上应该始终指定一个字符集。但如果你不这样做,那么它将使用ISO-8859-1 (=Latin-1).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UTF-8 字符集不适用于 javax.mail 的相关文章

  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • 将 localStorage 值获取到 php [重复]

    这个问题在这里已经有答案了 我在 localStorage 中设置了一个变量 我想将它放入 php 中 当php执行时 该值已经在本地存储中设置 但是我应该如何进入php 我尝试过这样的事情 myvar 但这由于某些原因给出了Uncaugh
  • 当传递给函数时,如何强制警告使用错误大小的数组?

    假设您有一个以字符串作为参数的函数 void foo char arg 如果我们确定数组 不要与字符串长度混淆 谢谢 chux 将始终具有一定的大小 假设为 8 那么我们可以这样做 void bar char arg 8 然后这样称呼它 c
  • 聚合物 3 - 谷歌地图

    我想知道如何将 Google 地图包含在 Polymer 3 中 我刚刚从 Polymer 2 升级到 Polymer 3 这是我的示例 不是入门套件的工作基础 import PolymerElement html from polymer
  • 构建 QGIS 时未解析的符号

    我已经能够从这一步取得进展 在 Windows 7 上构建 QGIS 源代码 不工作 我正在尝试使用 Visual Studio 10 Express 构建最新的 QGIS 2 10 1 但在构建 ALL BUILD 时获取这些未解析的符号
  • 我在每个工作表的 VBA 循环中搞砸了什么?

    目前 我必须一次发送多封信件 并且通常只替换单元格中的一两个单词 问题是我需要将这些单词加粗 并且在 150 个工作表上单独使用这个宏会很乏味 我对编码非常陌生 并尝试在线搜索以编辑此代码以循环所有工作表 但我尝试的所有操作似乎只会更改我所
  • 频繁地在 ObjectOutputStream 上调用 reset() 可以吗?

    我读过一些让我不确定并寻找替代方法的地方 是否打电话reset 太频繁会导致网络紧张 还是不必要的 我正在使用 TCP 通过 ObjectOutputStream 发送对象 对象值在再次写入之前会发生更改 现在相同的对象但包含不同的值 没有
  • Spring boot - 发生非法反射访问操作

    我向演示应用程序添加了两个新的依赖项 即 spring 集成和 spring 集成文件 之后我在控制台中收到以下警告 应用程序工作正常 但它困扰着我 我怎样才能克服这个问题 WARNING Illegal reflective access
  • 使用向左和向右箭头键选择上一个/下一个菜单而不是下一个/上一个菜单

    在完整的应用程序中注意到 但在简单的演示中可以完全重现 我有一个MenuStrip包含三个菜单 A B and C 每个菜单包含三个项目 A1 A2 C2 C3 When I press Alt the first menu A becom
  • 如何在javascript中比较两个日期时间?

    我尝试通过 C 的 JSON 解析创建标记 我有一个关于 javascript 中的日期时间比较的小问题 var nowDate new Date var LastTenMin new Date nowDate getFullYear no
  • 尝试运行工作表更改事件两次

    我正在尝试为两个不同的列 A 和 I 运行此工作表更改事件 Private Sub Worksheet Change ByVal Target As Range Dim A As Range B As Range Inte As Range
  • 在哪里可以找到 iPhone 系统按钮和图标图形?

    我正在尝试找到一种在网站中使用原始 Apple 系统按钮和图标的方法 有没有办法把这些原始图形变成png格式 当然 获得它们的方法并不太好 我想到的有两个 将他们从这个链接 然后转换为png 在 iPhone 上截取屏幕截图 然后从保存的图
  • 将材料 UI 选项卡与 React 一起使用

    我偶然发现的是了解如何使用 Material UI 选项卡 我发现了很多帖子 但每个帖子都针对不同版本的材料 UI 并且每个帖子都给出了完全不同的实现方式 我创建的 Web 应用程序是一个分析仪表板 我的页面上有 3 个部分 应用栏 主体
  • 在Python中声明静态方法是否需要@staticmethod装饰器?

    我很好奇为什么我们需要 staticmethod装饰器将方法声明为静态 我正在阅读有关 Python 中的静态方法的内容 并且我了解到静态方法可以在不实例化其类的情况下进行调用 所以我尝试了下面的两个示例 但两者的作用相同 class St
  • 尝试使用 Dagger2 了解 Android 上的依赖注入

    我有以下代码工作 某类 public class SomeClass Inject Named special OkHttpClient mOkHttpClient public SomeClass Activity activity My
  • 访问模型中的设备 current_user

    您好 我正在尝试访问模型中的 current user 以便使用 find or create by 动态创建元素 以下是我的模型中的方法 def opponent name name self opponent Opponent find
  • Android JNI:32 位与 64 位设备的兼容性?

    我有一些使用本机组件的库 这些库是使用 NDK 为 32 位 Arm 架构构建的 现在我们在现代设备上拥有 64 位处理器 所以我想知道这些库是否可以工作 在我的情况下 我没有本机库的源代码文件 只有 SO 文件 我无法为 64 位构建它们
  • 如何计算图像中不规则物体的面积(opencv)?

    So I have this image 我需要计算特定部分的面积 所以我编写了以下代码 packages from imutils import perspective from imutils import contours impor
  • 在 MATLAB 中总结 Dice

    我的函数 RollDice 模拟给定数量的六面骰子滚动给定的次数 该函数有两个输入参数 即每次实验中掷骰子的数量 NumDice 和掷骰子的总次数 NumRolls 该函数的输出将是长度为 NumRolls 的向量 SumDice 其中包含
  • ReferentialConstraint 中的依赖属性映射到存储生成的列

    写入数据库时 出现此错误 ReferentialConstraint 中的依赖属性映射到 存储生成的列 列 付款 ID public bool PayForItem int terminalId double paymentAmount e
  • UTF-8 字符集不适用于 javax.mail

    我用过Java 邮件 API 用于发送电子邮件 我正在使用联系人公式发送输入 该输入必须发送到特定的电子邮件 尽管我是丹麦人 但电子邮件发送没有问题 因此我需要在主题和电子邮件文本中使用三个丹麦字符 即 和 因此 我发现我可以使用 UTF