This works on my local machine (using Tomcat 5 and javamail 1.4) but when I try it on my Linux machine (Fedora - still using tomcat 5 and javamail 1.4) I get the following exception:
java.lang.ClassCastException: gnu.mail.handler.TextPlain cannot be cast to javax.activation.DataContentHandler
javax.activation.MailcapCommandMap.createDataContentHandler(MailcapCommandMap.java:496)
javax.activation.DataHandler.getDataContentHandler(DataHandler.java:568)
javax.activation.DataHandler.writeTo(DataHandler.java:294)
javax.mail.internet.MimeUtility.getEncoding(MimeUtility.java:230)
javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1065)
javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1923)
javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1904)
javax.mail.Transport.send(Transport.java:79)
controls.EmailUtil.sendEmail(EmailUtil.java:44)
lmt.ContactUs.doPost(ContactUs.java:42)
javax.servlet.http.HttpServlet.service(tomcat5-servlet-2.4-api-5.5.23.jar.so)
javax.servlet.http.HttpServlet.service(tomcat5-servlet-2.4-api-5.5.23.jar.so)
Here is the 'offending' code:
try{
Properties props = new Properties();
props.put("mail.smtp.host",SOME MAIL SERVER);
Session session = Session.getDefaultInstance(props, null);
Message msg = new MimeMessage(session);
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++)
{
addressTo[i] = new InternetAddress(recipients);
}
msg.setRecipients(Message.RecipientType.TO, addressTo); msg.addHeader("MyHeaderName", "myHeaderValue");
msg.setSubject(subject);
msg.setContent(message, "text/plain");
Transport.send(msg);
return true;
}
catch(MessagingException me)
{
return false;
}
it fails at 'Transport.send(msg);'
Obviously I'm a noob with javamail and I really don't understand why it works on my local machine but not on the server.
Anyway help is greatly appreciated.
Message was edited by:
uberalles