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

Posted bevis-byf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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");
    }
}
 

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

 

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

 

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

以上是关于用commons-email,javax.mail发送邮件,中文附件名乱码。的主要内容,如果未能解决你的问题,请参考以下文章

使用javax.mail实现邮件的发送

使用javax.mail实现邮件的发送

java使用javax.mail进行免费的邮件发送

错误:阅读电子邮件内容时出现 javax.mail.internet.MimeMultipart

包 javax.mail 和 javax.mail.internet 不存在

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;