Unicode caractères et le Printemps JavaMailSenderImpl, pas de caractères unicode sous Linux!
Je suis en utilisant le Printemps et l'JavaMailSenderImpl, un célèbre printemps de classe pour envoyer des e-mails. Mes e-mails contiennent beaucoup de caractères unicode comme èéàò ou notamment la redoutable symbole€. Mes classes fonctionner correctement lors de l'exécution de windows. Les e-mails envoyés sont avec tous les caractères (texte brut, pas de html). Si j'installe mon application sur un Linux virtual server, je vais prendre tout ? à la place des caractères spéciaux. C'est le Printemps, Java configuration ou autre chose?
Mise à jour
Fondamentalement l'architecture est ceci: il y a une source de l'Application Web et j'utilise printemps JavaMailSenderImpl pour obtenir le travail effectué. C'est la configuration dans le servlet-contexte:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${email.server}" />
<property name="username" value="${email.server_user}"></property>
<property name="password" value="${email.server_pass}"></property>
</bean>
Je suis en utilisant le même hôte sur windows et linux pour envoyer un mail (qui n'est pas la machine sur laquelle l'application s'exécute sur... C'est juste une norme de fournisseur de services de messagerie via SMTP).
Le code que j'utilise pour envoyer l'e-mail est tout simplement:
SimpleMailMessage msg = new SimpleMailMessage();
msg.setTo(adminEmail);
msg.setFrom(adminEmail);
msg.setSubject(subject);
msg.setText(message);
mailSender.send(msg);
Même paramètre:
System.setProperty("mail.mime.charset", "utf8");
au démarrage de l'application n'a pas pu résoudre la situation. En fait, avant je recevais ? au lieu de €, je reçois maintenant �...
locale
de votre utilisateur de linux? c'est peut-être l'aide d'un LANG qui ne prend pas en charge ces caractèresPouvez-vous nous montrer le code où l'
message
variable est initialisée?c'est juste normal de la chaîne... de toute façon je suis à poster la solution.
OriginalL'auteur gotch4 | 2011-04-12
Vous devez vous connecter pour publier un commentaire.
Dans mon cas, j'ai résolu le problème d'encodage en spécifiant JavaMailSenderImpl de defaultEncoding:
Je crois que vous pouvez également définir la valeur dans la configuration spring:
OriginalL'auteur Mr. 14
Je vous poste la solution.
Première assurez-vous à propos de l'encodage du code source (si il y a du texte en ligne). Dans eclipse est le premier écran si vous choisissez propriétés du projet. Avertissement: si vous modifiez ultérieurement, il va corrompre votre texte.
Deuxième Il est préférable d'utiliser MimeMailMessage de sorte que vous pouvez spécifier l'encodage, comme ceci:
Troisième assurez-vous que le système de propriété
mail.mime.charset
est configuré en UTF-8, soit à partir de Java ou de commande par code comme ceci:Merci à tous ceux qui m'ont aidé de tri.
il dit que je dois attendre 21 heures... huuuuuu
Travaille sur Windows et eu le même problème. Le titre et le contenu foiré caractères. à l'aide de MimeMessageHelper pour définir le titre et le contenu en est la cause, même si l'encodage utf-8 a été mis là. La commutation à la plaine de MimeMessage.setText et .setSubject avec l'encodage UTF-8 spécification travaillé.
OriginalL'auteur gotch4
Le problème est susceptible d'être lorsque vous traduisez entre un tableau d'octets (par exemple, la lecture à partir d'un fichier) et un
java.lang.String
. Pouvez-vous donner plus de détails à votre application à l'architecture?C'est un projet Maven? Vous devez spécifier la source de codage par maven.apache.org/general.html#encoding-warning. Il y a probablement un équivalent pour Ant.
Je ne suis pas en utilisant Ant ou Maven... je suis juste à l'aide d'Eclipse...
J'ai pensé à réglage électronique.le mime.charset en UTF-8, est-ce assez?
Vous avez besoin de donner plus d'informations (éditer votre question) à propos de votre application, de l'architecture, aussi pouvez-vous poster une partie du code où vous appelez JavaMailSenderImpl?
OriginalL'auteur artbristol