Le fichier new1.txt contient une chaîne UTF-8 envoyée comme objet. Mais l'email reçu montrera la chaîne au format CP1252. Mais si je définis le codage de la console en accédant à Run Config-> Common Tab et en définissant l'encodage de la console sur UTF-8, je peux voir correctement la chaîne UTF dans le courrier électronique reçu. J'utilisant le serveur Google pour ce test:L'objet EMail est défini dans le codage CP1252 même si la chaîne est en UTF-8
ne fonctionne pas: æ- ¥ 本: Nom du partenaire:? Ã, ¢ ã,¹ãƒãƒ © ã,¼ãƒ ã, «æ ªå¼ 会社:
travail: 日本: Nom du partenaire: ア ス ト ラ ゼ ネ カ 株式会社
Mon code: nom d'utilisateur final String = "[email protected]"; final String mot de passe = "xxxxxx";
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
try {
File fileDir = new File("c:\\new1.txt");
BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream(fileDir), "UTF-8"));
String str;
String str1 ="";
while ((str = in.readLine()) != null) {
str1 += str;
}
Message message = new MimeMessage(session);
MimeMultipart mp = new MimeMultipart();
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("[email protected]"));
message.setSubject(str1);
MimeBodyPart body = new MimeBodyPart();
body.setContent("This is a Test EMail. Please ignore", "text/html");
body.setDisposition(MimeBodyPart.INLINE);
mp.addBodyPart(body);
byte[] attachmentData = str1.getBytes();
DataHandler dh = new DataHandler(new ByteArrayDataSource(attachmentData,"application/octet-stream"));
MimeBodyPart attachment = new MimeBodyPart();
attachment.setDataHandler(dh);
attachment.setDisposition(MimeBodyPart.ATTACHMENT);
attachment.setFileName("new1.txt");
mp.addBodyPart(attachment);
message.setContent(mp);
Transport.send(message);
System.out.println("Done");
grâce Madhu
Après les changements de code que j'ai fait dans mon application J2EE. En cela, il ajoute 3 fichiers en pièces jointes. L'un des 3 fichiers est le sujet lui-même. Dans la pièce jointe (Subject.txt) conent est très bien.
MimeMessage message = new MimeMessage(s);
....
message.setSubject(subject,"UTF-8");// MimeUtility.encodeText(subject,"UTF-8", "B"));
...
MimeBodyPart body = new MimeBodyPart();
body.setContent(sm.getMailBody(), "text/html; charset=UTF-8");
body.setDisposition(MimeBodyPart.INLINE);
mp.addBodyPart(body);
The debug message. I could not add it as text
Merci pour la solution. Cette solution a fonctionné. Mais ceci est mon programme d'essai. Cette solution ne fonctionne pas dans mon application J2EE. Dans cette application, j'utilise sendmail comme serveur de messagerie à Aix et l'application J2EE fonctionne sur WebSPhere Process Server 7.0. –
Pouvez-vous décrire les différences? Vous voudrez peut-être définir props.put ("mail.debug", "true"); et capturer la sortie et éditer votre question - cela contiendra des données de message brutes et le champ d'en-tête codé qui est cassé – Jan
Ceci est le message de débogage: –