JAVA MAIL发送中文附件失败的原因

用JAVA MAIL发了中文附件,结果接收的时候附件为空,折腾了一小时,才发现是文件名乱码造成的:

最后用了这句:

mailArchieve.setFileName(MimeUtility.encodeText(fds.getName(),"GBK","B")); 


解决了附件问题。


感谢此博客,:

http://bluewens.blog.163.com/blog/static/699130720095911131482/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您需要使用JavaMail API来发送附件的电子邮件。以下是一个示例代码,您可以根据自己的需求进行修改: ``` import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class EmailSender { public static void main(String[] args) { // 收件人的电子邮件ID String to = "recipient@example.com"; // 发件人的电子邮件ID String from = "sender@example.com"; // 发件人电子邮件的用户名和密码 final String username = "sender_username"; final String password = "sender_password"; // 定义邮件服务器的主机名和端口号 String host = "smtp.example.com"; int port = 587; // 创建一个邮件会话 Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.port", port); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(username, password); } }); try { // 创建一个默认的 MimeMessage 对象 Message message = new MimeMessage(session); // 设置 From: 头部头字段 message.setFrom(new InternetAddress(from)); // 设置 To: 头部头字段 message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); // 设置主题 message.setSubject("邮件主题"); // 创建一个多部分消息 Multipart multipart = new MimeMultipart(); // 创建文本消息部分 BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("邮件正文"); multipart.addBodyPart(messageBodyPart); // 创建附件部分 messageBodyPart = new MimeBodyPart(); String filename = "path/to/file"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // 设置消息多部分的内容 message.setContent(multipart); // 发送消息 Transport.send(message); System.out.println("邮件已经发送。"); } catch (MessagingException e) { throw new RuntimeException(e); } } } ``` 在代码中,您需要替换以下内容: - to:收件人的电子邮件ID - from:发件人的电子邮件ID - username:发件人电子邮件的用户名 - password:发件人电子邮件的密码 - host:邮件服务器的主机名 - port:邮件服务器的端口号 - message.setSubject("邮件主题"):设置邮件的主题 - messageBodyPart.setText("邮件正文"):设置邮件的正文 - filename:附件的路径 请确保您已经在您的项目中添加了 JavaMail API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值