用commons-email,javax.mail发送邮件,中文附件名乱码。

import java.io.UnsupportedEncodingException;

import javax.mail.internet.MimeUtility;

import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;

public class MailTest {
    public static void sendMultiPartEmail() throws EmailException {
        EmailAttachment attachment = new EmailAttachment();
        // 设置附件路径
        attachment.setPath("C:/test.log");
        attachment.setDisposition(EmailAttachment.ATTACHMENT);
        // 附件描述
        attachment.setDescription("This is Smile picture");
        String fileName = "中文名附件.log";
        try {
            fileName = MimeUtility.encodeText(fileName); // 解决中文附件乱码
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        attachment.setName(fileName);
        // 创建一个含附件的email
        MultiPartEmail multipartemail = new MultiPartEmail();
        multipartemail.setHostName("smtp.qq.com");// 设置主机名称
        multipartemail.setCharset("GBK");// 设置字符编码
        multipartemail.addTo("您的QQ号@qq.com"); // 设置发送邮件目的地址
        // 设置发送源地址和显示名,此处是自己发给自己,可以填任意邮件地址
        multipartemail.setFrom("您的QQ号@qq.com", "邮件里显示的中文名");
        multipartemail.setAuthentication("您的QQ号,不含@qq.com", "您的QQ密码");// 设置用户名和密码
        multipartemail.setSubject("测试发送附件");// 设置主题
        multipartemail.setMsg("暂无");// 设置邮件内容
        multipartemail.attach(attachment);// 添加附件

        multipartemail.send();// 发送邮件
    }

    public static void main(String[] args) {
        try {
            MailTest.sendMultiPartEmail();
        } catch (EmailException e) {
            e.printStackTrace();
        }
        System.out.println("send over");
    }
}
 

原来需要用MimeUtility.encodeText(fileNameString)转一下就可以不乱码了,记一下。

下附完整发送含附件的邮件。

原文地址:https://www.cnblogs.com/bevis-byf/p/11760778.html

时间: 2024-10-12 03:53:02

用commons-email,javax.mail发送邮件,中文附件名乱码。的相关文章

使用mod_encoding使apache支持中文附件名

本地测试环境为apache2.2.31,PHP5.3.27,操作系统为RHEL6.4x86_64,使用mod_encoding工具使apache支持中文附件名,比如http://www.example.com/合同.rar 1.先修改操作系统的语言环境,使linux本地支持中文,可以查看中文文件名 修改/etc/sysconfig/i18n文件将LANG="en_US.UTF-8"SYSFONT="latarcyrheb-sun16"修改为 LANG="z

DELPHI7调用BERLIN中间件的中文字段名乱码的解决办法

MSSQL数据库的表使用中文字段名,BERLIN开发的DATASNAP中间件,DELPHI7调用中间件的查询方法返回数据给CLIENTDATASET.DATA,发现中文字段名乱码,中文字段名的值可以正常显示. 怎么办? 发现在SQL语句中将中文字段名as 为英文字段名可以解决乱码的问题. select c1,字段名2 as c1 from t1 原因何在? BERLIN默认是使用UNICODE字符串的,BERLIN的CLIENTDATASET也是使用UNICODE字符串,而DELPHI7是ANS

javax.mail发送邮件

   /* @param fromMail  发送邮箱     * @param user  发送邮箱账号     * @param password  邮箱密码     * @param toMail  接收邮件地址     * @param mailTitle  邮件标题     * @param mailContent  邮件内容     * @throws Exception      */     public static void sendMail(String fromMail,

delphi2010发送邮件—中文显示为乱码解决

在delphi2010中拖idsmtp和idmessage这俩个控件,就可以发送邮件了. 在按钮btn1的click事件下写如下代码: 值得注意的是:1.你用哪个邮箱的服务器,在 IdSMTP1.Host:='smtp.qq.com'这都是有区别的,另外还需在所用的邮箱中设置账号里面开启SMTP服务. 发送邮件内容时,如果不指定IdMessage1.CharSet:='UTF-8';//,则发送内容中文显示为乱码. var filename: string; begin   //发送邮件主函数

Bitnami Redmine 中文附件名 报错修复

最近自己在服务器上搭了个redmine,用的是Bitnami的一键安装程序. 搭好后,运行得不错,居然还增加了负载均衡. 某天上传中文附件,打开报内部错误,去redmine官网看了下,果然有这个问题,中国人挺多. https://www.redmine.org/issues/19398 最后发现不是redmine造成的,redmine只是一个application,基于rails的,rails的文件名编码问题导致redmine出错. 上github,找到了解决方案 https://github.

[Zend Mail]发送中文名附件出现乱码解决方案

Zend Framework 1.0.* “=?UTF-8?B?”.base64_encode($title).“?=” 发送中文名附件,结果如图: 英文名附件,结果截图: 解决办法就是将中文文件名拼接为““=?UTF-8?B?”.base64_encode($title).“?=”” , 然后发送即可. <?php // Notice: Zend Mail 代码是基于 zend framework 1.0.* 版本,zend framework 2.0 中发生改变 $title = "[

文件下载时附件名乱码问题

文件下载过程中,会出现中文名乱码或者文档名称中含有空格的,需要处理下,否则要么乱码,要么空格变成了"+"号,有点头疼. 临时想到一种办法: 即: //定义输出文件编码及类型和文件名 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 /**      * 查看附件      */     public String

C# MailMessage Attachment 中文名附件发邮件-Firefox中文显示正常,网页打开邮件附件中文名乱码

一.故事 首先通过CDO.Message来获取邮件EML相关数据:邮件标题.邮件内容.邮件附件.发件人.收件人.CC主要就这么几个,其次通过MailMessage来组织邮件通过Python来发送邮件! 就这么简简单单的需求!!问题出现了,中文附件名!Web打开始终是乱码!使用邮件客户端FireFox是OK的,查看了FireFox源码发现是乱码,这点说明FireFox的强大,非常强大! Content-Type: application/octet-stream; name=鎶ラ攢鍗昪s.xlsx

Java使用javax.mail.jar发送邮件并同意发送附件

因为Java在开发网页上占有绝大优势.所以作为web端的领军人物,譬如发送短信和发送邮件这些就成了必定,网络安全一再安全我们须要把账号的安全级别提到更高.因此这些对于开发者也就成了必须掌握的技能!我一直都认为作为开发者,不怕在开发的过程中遇到多少难题,而是有没有去解决它的勇气和决心,这里多学习就成为了关键,成为了一个程序员发展的重中之重!好啦.闲话就讲到这里.来点实际的. 当一个开发者工作到一定程度后,面向对象的思维就会一直在他的老子里环绕.所以我们先把邮件的常量类.实体类以及工具类等等先该封装