[JAVA] Der angehängte Dateiname wurde in der Spring Boot-Mail verstümmelt, also Gegenmaßnahmen

E-Mail-Anhänge sind verstümmelt

org.springframework.boot:spring-boot-starter-mail

Als ich die angehängte Datei mit der im Web und in Qiita verfügbaren Mail-Versandmethode von Spring verschickte, wurde der Name der angehängten Datei verstümmelt. Screen Shot 2019-04-01 at 08.00.21.png

Anscheinend ist es in Ordnung, wenn der Dateiname nur japanisch ist, aber es scheint, dass dieses verstümmelte Zeichen auftritt, wenn die Dateikennung eingegeben wird (ich habe hier nicht im Detail untersucht).


    private void sendMail(File file) throws MessagingException, URISyntaxException, IOException {
        JavaMailSender sender = this.getMailSender();
        
        MimeMessage message = sender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true, StandardCharsets.UTF_8.name());
        
        String toAddr = this.mailToAddr;
        helper.setTo(toAddr);

        //Unterstützt mehrere CC-Adressen (durch Kommas getrennt))
        if (!StringUtils.isEmpty(this.mailCcAddrs)) {
            String[] ccAddrArr = this.mailCcAddrs.split(",");
            helper.setTo(ccAddrArr);
        }
        String subject = "Dies ist eine Testmail"; 
        helper.setSubject(subject);
        
        //Mail-Body-Vorlage abrufen
        Path path = Paths.get(getClass().getClassLoader()
                .getResource("mail_template.txt").toURI());
                    
        Stream<String> lines = Files.lines(path);
        String template = lines.collect(Collectors.joining("\n"));
        String body = template.replace("[[Replace]]", toAddr);
        lines.close();
        helper.setText(body);
        
        //Datei anhängen
        helper.addAttachment("Der Name der angehängten Datei Die angehängte ist eine Vorlage.txt", file);
        
        sender.send(message);
    }

Folgende Punkte wurden behoben

Verarbeiten Sie den Dateinamen der angehängten Datei einmal

MimeUtility.encodeWord("Dateiname");

Screen Shot 2019-04-01 at 07.59.36.png

Fügen Sie den Systemeigenschaften E-Mail-Einstellungen hinzu

Ändern Sie diese Eigenschaft, bevor Sie Ihre erste MimeMessage-Instanz erstellen

System.setProperty("mail.mime.splitlongparameters", "false");

Screen Shot 2019-04-01 at 07.59.20.png

Überprüfen Sie den Dateinamen nach der obigen Korrektur

Screen Shot 2019-04-01 at 08.00.06.png

Recommended Posts

Der angehängte Dateiname wurde in der Spring Boot-Mail verstümmelt, also Gegenmaßnahmen
Von JavaMail gesendete E-Mails Der Dateiname der angehängten Datei kann von Google Mail nicht wiederhergestellt werden
Statische Dateizugriffspriorität beim Spring Boot
Memorandum zum Herunterladen lokaler Dateien mit Spring Boot
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
So binden Sie mit einer Eigenschaftendatei in Spring Boot
[Spring Boot] So verweisen Sie auf die Eigenschaftendatei
Zeigen Sie die Gradle-Aufgabe im Spring Boot-Projekt an
Geben Sie die statische Ressourcencodierung in Spring Boot an
Ich möchte die maximale Dateigröße für das Hochladen von Dateien für jede URL in Spring Boot steuern
Spring Boot 1.x wird im nächsten Jahr EOL erreichen.
Fügen Sie die Datei in die Eigenschaften eines Strings mit Spring XML-Konfiguration ein
Ich möchte die Methode des Controllers kennen, bei der die Ausnahme im ExceptionHandler von Spring Boot ausgelöst wurde