当前位置: 首页 > 知识库问答 >
问题:

以Excel作为附件的Java电子邮件中的UTF-8字符

隆璞
2023-03-14

我正在开发一个遗留应用程序,在这个应用程序中,我必须在电子邮件正文和附件(Excel、xls文件)中发送一封带有特殊字符(utf-8)的电子邮件。

我在这方面做了很多尝试。特殊字符在附件xls文件中没有正确显示,但在电子邮件正文中显示正确。

我正在使用的代码片段如下所示。


    private void initalizeMailSession()
    {
        java.util.Properties props = new java.util.Properties();
        props.setProperty("mail.smtp.host", Properties.MAIL_SMTP_HOST);
        mailSession = Session.getInstance(props);
    }

    public void sendMailUtf8Attachment() throws Exception
    {
        // Send mail for current object

        if(mailSession==null)
            initalizeMailSession();
        MimeMessage mailMsg = new MimeMessage(mailSession);
        InternetAddress recipient=null;
        
        if(toList==null&&ccList==null&&bccList==null)
        {
            throw new Exception("No Recipents Found");
        }
        if(toList!=null)
        {
            for(String toAddress: toList)
            {
                recipient=new InternetAddress(toAddress);
                mailMsg.addRecipient(javax.mail.Message.RecipientType.TO, recipient);
            }
        }
        
        if(sender==null)
            throw new Exception("Sender not found");
        
        InternetAddress sender=new InternetAddress(this.sender);
        mailMsg.setFrom(sender);
        
        mailMsg.setSubject(subject);

        MimeMultipart mult = new MimeMultipart();
        
        MimeBodyPart messagePart = new MimeBodyPart();
        messagePart.setContent(mailMessage, mailType);  
        
        mult.addBodyPart(messagePart);

        MimeBodyPart filePart = new MimeBodyPart();
            
        filePart.setText(message, "UTF-8"); // message string is having html code with Chinese characters in it.
        filePart.setDisposition(MimeBodyPart.ATTACHMENT);
        filePart.setFileName("attachmen.xls");
        filePart.setHeader("Content-Transfer-Encoding", "base64");
        filePart.setHeader("Content-Type", HTML);
            
        mult.addBodyPart(filePart);


        mailMsg.setContent(mult);
        
        Transport.send(mailMsg);
        
        System.out.println("Mail send..");
    }


具有特殊字符的邮件正文:

请帮助我如何做到这一点,以正确显示附件中的特殊字符。

共有1个答案

彭正谊
2023-03-14

尝试此项目-

 类似资料:
  • 问题内容: 我有一个这样的字符串: 我想以正确的UTF-8编码获取文件名。在Maven Central的某处是否有一个库方法可以为我执行此解码,还是我需要测试模式并手动解码base64? 问题答案: 在MIME术语中,那些编码的块称为编码字。看看在JavaMail的。该方法将解码字符串中的所有编码词。 你可以用

  • 问题内容: 请问如何发送utf8电子邮件? 输出量 问题答案: 您只需要在调用中添加参数即可(默认情况下假设)。 例如:

  • 我正在使用Meteor并尝试将pdf附加到电子邮件中。我目前将pdf作为base 64字符串返回给客户端,该字符串在新窗口中打开并显示pdf。我想以pdf的形式将base 64附加为电子邮件附件。 邮寄服务器方法: 将base64字符串返回给客户端的代码段: 当前显示pdf的客户端代码: 为了将base64字符串作为pdf附件附加,我应该做些什么?我似乎无法获得流星邮件发送的数据,因为我收到了错误

  • 问题内容: HTML电子邮件可以使用图像附件作为标记的来源吗? 假设我正在发送包含每个电子邮件特定图像的电子邮件-它们作为电子邮件的附件发送-电子邮件中的HTML正文可以使用这些图像吗?我的猜测是 不会 ,但是是否有任何 破解 或变通办法可以使它正常工作? 谢谢, 问题答案: 无需黑客。使用URI方案

  • 问题内容: 我正在使用sendgrid发送电子邮件,并且使用以下代码可以正常工作,但没有附件。 但是我需要发送附件,因此我搜索了github源和Web文档API,由于某种原因,没有javadocs,但是有一个示例GitHub sendgrid, 所以我一直在尝试直到它起作用为止,我缩小了一些异常和响应代码,起初我是被禁止的未经授权,最好是响应202,表示有效且已排队(在此处检查),这是我的代码发送

  • 使用Jenkins1.499和版本2.25的Jenkins电子邮件扩展插件。当电子邮件被发送时,电子邮件的内容显示为通知的附件,而不是在电子邮件的正文中。事实上,邮件正文是空白的。更改电子邮件的内容类型没有任何效果。我们使用Exchange/Outlook,这可能是问题所在吗?有什么想法可以在邮件的正文中获得邮件的内容吗?