2016-01-13 5 views
0

Я написал код для отправки через java-mail API. Все работает нормально, но обычный текст, который я отправляю в получателе получателем в виде загружаемого вложения, а не обычного текста сообщение.Обычный текстовый адрес электронной почты, отправленный через JavaMail, поступает как вложение

Я не знаю, почему это происходит. Ниже приведен код и его вывод, когда я запускаю его.

 String toEmail=request.getParameter("email"); 
     String subject=request.getParameter("subject"); 
     String message=request.getParameter("message"); 

     String fromEmail="[email protected]"; 
     String username="suyash.tilhari12"; 
     String password="********"; 

     mailSender.sendEmail(fromEmail, username, password, toEmail, subject, message); 

public void sendEmail(String fromEmail,String username,String password, 
      String toEmail,String subject,String message) 
    { 
     try 
     { 
     Properties props= System.getProperties(); 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.port", "465"); 
     props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
     props.put("mail.smtp.socketFactory.port", "465"); 
     props.put("mail.smtp.socketFactory.fallback", "false"); 

     Session mailSession = Session.getDefaultInstance(props, null); 
     mailSession.setDebug(true); 

     Message mailMessage=new MimeMessage(mailSession); 
     mailMessage.setFrom(new InternetAddress(fromEmail)); 
     mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail)); 
     mailMessage.setContent(message, "html/text"); 
     mailMessage.setSubject(subject); 

     Transport transport=mailSession.getTransport("smtp"); 
     transport.connect("smtp.gmail.com",username,password); 
     transport.sendMessage(mailMessage, mailMessage.getAllRecipients()); 
     } 
     catch (Exception ex) { 
      Logger.getLogger(MailSenderBean.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

} 

Я использовал Java Mail API, IDE NetBeans, Glassfish сервер, Enterprise Java Bean.

РЕЗУЛЬТАТ СЛЕДУЮЩИЙ:

Почта recipient- Посмотрите, простое текстовое сообщение в виде вложения.

enter image description here

Сообщение внутри этой привязанности, которая теперь загружается и opened-

enter image description here

Как это вызвано и как я могу решить эту проблему?

ответ

0

@Suyash: Попробуйте выполнить следующие инструкции на этом http://www.tutorialspoint.com/java/java_sending_email.htm ссылке.

+0

Спасибо, я посетил этот учебник и обнаружил, что мне нужно написать mailMessage.setText (message) ; вместо -> mailMessage.setContent (сообщение, "html/text"); и это сработало отлично. –

1

Попробуйте установить содержание в "text/html", а не как "html/text"

Так оно и должно выглядеть следующим образом:

setContent(message, "text/html"); 
1

Проблема в вашем случае связана с содержанием MIME. Все правильно, но не та часть.

В этой строке

mailMessage.setContent(message, "html/text"); 

Вы используете "HTML/текст" как тип MIME, который не является действительным.

Вы можете найти список типов MIME здесь: http://www.sitepoint.com/web-foundations/mime-types-complete-list/

Код должен быть

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

или

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

включить информацию кодировок (ISO-8859-1, UTF-8 и т. Д.).

В этом случае для отправки только одного контента. Если вам нужно отправить контент в разных форматах (например, html и обычный текст) или вам нужно отправить вложения, вы должны использовать MimeMultipart

+1

Или используйте ['setText'] (https://javamail.java.net/nonav/docs/api/javax/mail/internet/MimeMessage.html#setText-java.lang.String-java.lang.String- java.lang.String-). И исправить эти [распространенные ошибки] (http://www.oracle.com/technetwork/java/javamail/faq/index.html#commonmistakes). –

+0

Вы правы, использование setText решает эту проблему, и в этом случае это проще. Я просто пытался объяснить, почему он не работает. –