2010-03-30 8 views
8

아래 코드를 사용하면 영어가 아닌 이메일을 보낼 수 있습니다. 제목이 올바르게 표시되지만 본문이 횡설수설하는 것으로 보입니다.
아이디어가 있으십니까? 편집이 text/plain로 변경영어 이외의 문자를 인코딩하는 자바 메일

msg.setContent(message, "text/plain; charset=UTF-8"); 

:
당신에게

public void postMail(String recipient, String subject, String message, String from) throws MessagingException, UnsupportedEncodingException { 

      //Set the host smtp address 
      Properties props = new Properties(); 
      props.put("mail.smtp.host", "mail.infodim.gr"); 

      // create some properties and get the default Session 
      Session session = Session.getDefaultInstance(props, null); 

      // create a message 
      Message msg = new MimeMessage(session); 

      // set the from and to address 
      InternetAddress addressFrom = new InternetAddress(from); 
      msg.setFrom(addressFrom); 

      InternetAddress addressTo=new InternetAddress(recipient); 
      msg.setRecipient(Message.RecipientType.TO, addressTo); 

      // Setting the Subject and Content Type 
      msg.setSubject(subject); 

      msg.setContent(message, "text/plain"); 
      Transport.send(msg); 

     } 
+0

어떻게 utf-8을 인코딩 할 대상을 설정 했습니까? – user3014926

답변

18

에 한번 감사드립니다.

+0

Nop .. 그럴 수 없어 –

+2

은 "text/plain; charset = \"UTF-8 \ "" – wds

+0

이어야합니다. 이것은 매우 좋은 추측이며 아마도 정확한 해결책에 가깝습니다. 우리는 당신의 이메일이 어느 캐릭터 셋에 속해 있는지를 짐작할 수 있습니다. 당신이 모른다면, 아마도 질문에 몇 줄의 샘플을 16 진수 덤프 할 수 있습니다. – tripleee

7

대신

msg.setContent(message, "text/plain"); 

의 나는이 캐릭터 세트는 그리스어입니다 때문에 당신의 이름에서 ISO-8859-7 짐작

Multipart mp = new MimeMultipart(); 
MimeBodyPart mbp = new MimeBodyPart(); 
mbp.setContent(message, "text/plain; charset=ISO-8859-7"); 
mp.addBodyPart(mbp); 

msg.setContent(mp); 

쓰기,하지만 어쩌면 당신은 더 적절하게 선택할 수 있습니다. 아니면 UTF-8도 귀하의 케이스에서 작동합니다.

+0

왜 멀티 파트가 단일 본문 부분을 랩핑해야합니까? 그건 바보 야. – tripleee

+1

아마 첨부 파일을 보내는 응용 프로그램에서 스 니펫을 가져 왔기 때문일 수 있습니까? 저는 자바 메일을 사용하는 초보자입니다. – bluish

0

다른 도움이되지 않으면 소스 파일 (.java 파일 포함)의 인코딩을 UTF8로 변경하십시오. Eclipse에서는 Window -> Preferences -> General -> Workspace : 텍스트 파일 인코딩 을 사용하여 텍스트 파일의 기본값으로 CP1252를 사용했습니다.

.properties 파일에서 텍스트를 가져옵니다. UTF8로 변경해도 도움이되지 않았습니다. 이것은 미친 짓이지만 내 .java 파일을 UTF8로 전환하면 문제가 해결됩니다!

관련 문제