public class Mail { public static String send() throws Exception{ Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.host", "smtp.mymailprovider.org");
MimeMessage message = new MimeMessage(Session.getDefaultInstance(props,null)); message.setSubject("Testing javamail plain"); message.setContent("This is a test", "text/plain;charset=\"iso-8859-1\""); message.setFrom(new InternetAddress("***@***")); message.addRecipient(Message.RecipientType.TO, new InternetAddress("***@***"));
if (message instanceof MimeMessage){ try{ Transport.send(message); return new String("Success"); } catch (Exception e){ StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); return sw.toString(); } } else{ return new String("Not an instance of MimeMessage"); } } }
Et voilà l'erreur retournée :
javax.mail.MessagingException: SMTP can only send RFC822 messages at javax.mail.Transport.send0(Transport.java:219) at javax.mail.Transport.send(Transport.java:81) at Mail.send(Mail:24)
De ce que j'ai pu voir dans le code de la classe Transport, l'exception est levée dans le cas où le message qu'on essaie d'envoyer n'est pas une instance de la classe MimeMessage. Mais après avoir ajouté la condition dans mon code, l'appel à Transport.send se fait toujours et par conséquent le message est bien une instance de la classe MimeMessage
Est-ce que quelqu'un aurait une idée sur ce qui peut causer cette erreur et comment la corriger ?