`

Java使用javax.mail发送邮件 解决收件人、发件人名字乱码问题

    博客分类:
  • java
 
阅读更多
/**
* 格式化 Name <email@address.com> 的地址
* @param name 名字
* @param email Email地址
* @return 格式化的地址
*/
public static String formatAddress(String name, String email) {
if (StringHelper.isNullOrEmpty(name)) {
return email;
}
try {
return String.format("%1$s <%2$s>", MimeUtility.encodeText(name, "UTF-8", "B"), email);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return email;
}

上面的函数用来格式化一个类似 Name <email@test.com> 的收件人或发件人地址。
解决名字乱码主要是其中一句:
MimeUtility.encodeText(name, "UTF-8", "B")

由于Email的规范,在smtp传输中不可使用中文字符。所以可以使用内置类的MimeUtility方法encodeText将收件人、发件人名字编码即可。编码方式有两种:"B"代表Base64、"Q"代表QP(quoted-printable)方式。
注意:不能将名字和email地址一起编码,如直接编码 "Name <email@test.com>" 后当做收件人就会出错。
注意:Mail的Subject和Content不需要我们显式的编码,在Set的时候这两项会被javax.mail自动编码。

上面的编码中指定了"UTF-8"字符集,是因为我的来源字符串在DB或者.properties文件中的都是UTF-8编码存储的。如果您的来源字符串字符集不一致,请修改成相应的。(直接写在源代码中的中文编码是"iso-8859-1")
分享到:
评论

相关推荐

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...

    james和javamail实现邮件收发(带发送附件)

    对于每封邮件,可以使用`Message`对象获取其详细信息,包括发件人、主题、日期和内容。 4. **处理邮件内容**:对于包含附件的邮件,我们可以使用`MimeMessage`的`getContent()`方法获取MIME表示的内容,然后解析和...

    java邮件发送代码

    这个方法通常需要以下几个参数:发件人邮箱地址、收件人邮箱地址、邮件主题、邮件正文,以及可选的抄送和密送收件人: ```java public class MailUtil { public static void sendMail(String from, String to, ...

    javamail收发邮件(带附件,正文带图).docx

    4. **设置邮件信息**:设置发件人、收件人、邮件主题等基本信息。 5. **构建邮件正文**:使用 `MimeBodyPart` 和 `MimeMultipart` 构建包含 HTML 内容和内嵌图片的邮件正文。 6. **添加附件**:遍历附件列表并添加到...

    java发邮件用到的jar包

    3. **创建Message**:使用`Session`创建`Message`对象,并设置邮件的基本信息,如发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress(...

    JavaMail组件在网站用户注册系统中的应用.pdf

    5. `javax.mail.internet.InternetAddress` 类:处理电子邮件地址,包括发件人、收件人、抄送和密送地址。使用`InternetAddress.parse()`解析地址字符串。 6. `javax.mail.internet.MimeMultipart` 类:用于构建...

    Java邮件发送实例

    总结一下,这个Java邮件发送实例展示了如何使用JavaMail API配置SMTP服务器,设置发件人和收件人,以及发送HTML格式的邮件。要注意,实际应用中应使用加密的SMTP服务(如SMTPS),并妥善处理用户输入以防止注入攻击...

    javamail发送html邮件

    4. **设置邮件内容**:使用 `MimeMessage` 对象设置邮件的主题、收件人、发件人、抄送人等。 5. **添加附件或 HTML 内容**:对于 HTML 邮件,通常使用 `MimeMultipart` 来组合邮件的不同部分。 6. **发送邮件**:...

    Java邮件开发源代码.zip

    4. 示例邮件数据:如测试的收件人、发件人、主题和正文内容。 5. 处理附件的代码:如果支持发送附件,会有处理二进制数据并将其附加到邮件中的代码。 在实际开发中,除了JavaMail API,开发者还可能使用其他库,如...

    android发送邮件的jar包

    接着,创建`MimeMessage`,设置发件人、收件人、主题和正文,最后通过`Transport.send()`方法发送邮件。 总之,这个"android发送邮件的jar包"提供了在Android应用中集成邮件发送功能的便利。通过理解和使用JavaMail...

    javamail 邮件系统

    JavaMail邮件系统是一种基于Java平台的邮件发送和接收解决方案,它允许开发者通过编程方式与SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)等邮件服务器进行交互。在JavaMail中,...

    java简易小邮箱 带下载附件

    2. 创建`Message`对象,设置发件人、收件人、抄送人、密送人、主题和邮件正文。 3. 使用`MimeBodyPart`或`MimeMultipart`来添加附件,对于多个文件,可以创建多个`MimeBodyPart`对象并将它们添加到`MimeMultipart`中...

    简单的javamail例子 (源码)

    - **表单元素**:该页面包含了一个简单的表单,用于收集发件人、收件人、邮件主题和邮件内容的信息。 - **表单提交动作**:表单提交的动作是 `sendMail.jsp`,这意味着当用户点击“发送”按钮后,表单数据会被传递...

    邮件的收发.pptx

    - 发件人通过邮件客户端软件撰写邮件,并将邮件提交给本地或指定的SMTP服务器。 - SMTP服务器负责将邮件转发至目标邮件服务器(通常是基于目标邮件地址所在域)。 - 目标邮件服务器将邮件存入目标用户的邮箱中。 ...

    ssh框架下的常见问题处理方式,免费下载

    需要配置SMTP服务器信息,并设置发件人、收件人、主题和正文。还可以发送HTML格式的邮件,包含图片和其他富文本内容。 6. **获取计算机信息**:Java的`java.lang.Runtime`和`java.net.InetAddress`类可以用来获取...

Global site tag (gtag.js) - Google Analytics