2014-11-11 5 views
1

나는 자바 메일을 사용하여 발신자에게 메일을 보내고 있습니다. 그러나 문제는 하나의 메일 본문에 여러 정보를 보낼 수 없다는 것입니다. 내가 가지고 여기, 하나의 메일에 여러 정보를 보내려면 지금까지자바 메일 API를 사용하여 메일에서 여러 정보를 보내는 방법

Properties props = System.getProperties(); 

    props.put("mail.smtp.user", senderEmail); 
    props.put("mail.smtp.host", gmail); 
    props.put("mail.smtp.port", port); 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.debug", "true"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.socketFactory.port", port); 
    props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.socketFactory.fallback", "false"); 

    // Required to avoid security exception. 
    MyAuthenticator authentication = new MyAuthenticator(senderEmail,senderMailPassword); 
    Session session = Session.getInstance(props,authentication); 
    session.setDebug(true); 

    Message message = new MimeMessage(session); 
    message.setFrom(new InternetAddress(senderEmail)); 
    message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(recipeintEmail)); 
    /*message.setRecipients(Message.RecipientType.CC,InternetAddress.parse(WebConstants.AdminMail));*/ 
    message.setSubject("Password Recovery mail"); 
    message.setText(resetLink); 
    message.setText("1236547"); 
    message.setText("Here is another text"); 
    message.setContent(messageText, "text/html; charset=utf-8"); 
    //message.setText(messageText); 

    Transport transport = session.getTransport("smtps"); 
    transport.connect(gmail,port, senderEmail, senderMailPassword); 
    transport.sendMessage(message, message.getAllRecipients()); 

    transport.close(); 

내 문제는 첫 번째의 setText가 아닌 다른 two.Can 사람의 도움을 작동하는지입니까 ??

+0

을 당신이 당신의 텍스트를 추가하지 못할 이유 :


먼저 메시지에 삽입 한 후 메시지 내용을 구축하기 위해 StringBuilder을 사용하고 의해이 같은 시도? – jjlema

+0

첫 번째 문자가 작동하지 않는 경우 – lucifer

+0

'내 문제는 첫 번째 문자 만 작동하고 다른 두 문자는 작동하지 않는다는 의미입니다. – Jens

답변

2

때마다 당신은 당신이 이전에 설정 한 텍스트를 덮어 쓰게됩니다

message.setText("whatever") 

를 호출합니다.

그리고,

message.setContent(messageText, "text/html; charset=utf-8"); 

로 최종 호출을 다시 (resetLink의 값으로 분명히 같은 값 귀하의 경우) messageText에 저장되어 무엇으로 모든 것을 덮어 쓰게됩니다.

StringBuilder sb = new StringBuilder(); 
sb.append(resetLink).append(System.lineSeparator()); 
sb.append("1236547").append(System.lineSeparator()); 
sb.append("Here is another text"); 

message.setText(sb.toString()); 
+1

속도 나 freemarker와 같은 일종의 템플릿 엔진이 훨씬 더 깨끗한 솔루션을 제공한다고 덧붙이고 싶습니다. –

+0

@ MarkusWMahlberg 전적으로 동의하지만, 현재의 질문 수준을 감안할 때, 템플릿 엔진을 통합하는 것은 너무 가깝다는 생각이 듭니다. –

+1

그것은 OP를위한 자발적인 운동을위한 제안이었다) –