[JAVA] Le nom du fichier joint a été déformé dans le courrier de Spring Boot, donc des contre-mesures

Les pièces jointes aux e-mails sont déformées

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

Lorsque j'ai envoyé le fichier joint à l'aide de la méthode d'envoi de courrier de Spring, disponible sur le Web et dans Qiita, le nom du fichier joint était déformé. Screen Shot 2019-04-01 at 08.00.21.png

Apparemment, c'est OK si le nom du fichier est uniquement japonais, mais il semble que ce caractère déformé se produit lorsque l'identifiant du fichier est entré (je n'ai pas étudié en détail ici)


    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);

        //Prend en charge plusieurs adresses CC (séparées par des virgules))
        if (!StringUtils.isEmpty(this.mailCcAddrs)) {
            String[] ccAddrArr = this.mailCcAddrs.split(",");
            helper.setTo(ccAddrArr);
        }
        String subject = "Ceci est un mail de test"; 
        helper.setSubject(subject);
        
        //Obtenir le modèle de corps de courrier
        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);
        
        //joindre un fichier
        helper.addAttachment("Le nom du fichier joint Le modèle joint est.txt", file);
        
        sender.send(message);
    }

Correction des points suivants

Traitez le nom de fichier du fichier joint une fois

MimeUtility.encodeWord("nom de fichier");

Screen Shot 2019-04-01 at 07.59.36.png

Ajouter des paramètres de messagerie aux propriétés système

Modifiez cette propriété avant de créer votre première instance MimeMessage

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

Screen Shot 2019-04-01 at 07.59.20.png

Vérifiez le nom du fichier après la correction ci-dessus

Screen Shot 2019-04-01 at 08.00.06.png

Recommended Posts

Le nom du fichier joint a été déformé dans le courrier de Spring Boot, donc des contre-mesures
E-mail envoyé par JavaMail Impossible de restaurer le nom de fichier du fichier joint par Gmail
Priorité d'accès aux fichiers statiques dans Spring Boot
Mémorandum de téléchargement de fichier local avec Spring Boot
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Comment se lier avec un fichier de propriétés dans Spring Boot
[Spring Boot] Comment se référer au fichier de propriétés
Afficher la tâche Gradle dans le projet Spring Boot
Spécifiez le codage des ressources statiques dans Spring Boot
Je souhaite contrôler la taille de fichier maximale pour le téléchargement de fichiers pour chaque URL dans Spring Boot
Spring Boot 1.x atteindra EOL l'année prochaine.
Mettez le fichier dans les propriétés de string avec la configuration spring xml
Je veux connaître la méthode du contrôleur où l'exception a été levée dans le ExceptionHandler de Spring Boot