File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Other JSE/JEE APIs and the fly likes JavaMail not working Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCA/OCP Java SE 7 Programmer I & II Study Guide this week in the OCPJP forum!
JavaRanch » Java Forums » Java » Other JSE/JEE APIs
Bookmark "JavaMail not working" Watch "JavaMail not working" New topic
Author

JavaMail not working

Dimitri Dimo
Greenhorn

Joined: Jan 25, 2003
Posts: 3
I just spent several hours trying everything I can find to send mail from Java and nothing works. I just get "java.lang.NoClassDefFoundError: javax/activation/DataSource". I have the activation.jar and all the JavaMail.jars in my classpath. I tried several code samples from on the web - all different techniques, but ultimately using the JAF and JavaMail - and they all failed with this error when they try to create a MimeMessage object.
Anyone else have this problem?
Using:
Tomcat 5
Code (this particular code is straight from oreilly book):
package com.jspservletcookbook;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class EmailBean {
//defaults
private final static String DEFAULT_CONTENT = "Unknown content";
private final static String DEFAULT_SUBJECT= "Unknown subject";
private static String DEFAULT_SERVER = null;
private static String DEFAULT_TO = null;
private static String DEFAULT_FROM = null;
static{
/*
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("email.mailDefaults");
DEFAULT_SERVER = bundle.getString("DEFAULT_SERVER");
DEFAULT_TO = bundle.getString("DEFAULT_TO");
DEFAULT_FROM = bundle.getString("DEFAULT_FROM");
*/
DEFAULT_SERVER = "mail._.com";
DEFAULT_TO = "dimitri@_.com";
DEFAULT_FROM = "dimitri@_.com";
}
//JavaBean properties
private String smtpHost;
private String to;
private String from;
private String content;
private String subject;
public void sendMessage() throws Exception {
Properties properties = System.getProperties();
//populate the 'Properties' object with the mail
//server address, so that the default 'Session'
//instance can use it.
properties.put("mail.smtp.host", smtpHost);
Session session = Session.getDefaultInstance(properties);
Message mailMsg = new MimeMessage(session);//a new email message
InternetAddress[] addresses = null;
try {

if (to != null) {
//throws 'AddressException' if the 'to' email address
//violates RFC822 syntax
addresses = InternetAddress.parse(to, false);
mailMsg.setRecipients(Message.RecipientType.TO, addresses);
} else {
throw new MessagingException(
"The mail message requires a 'To' address.");
}
if (from != null) {
mailMsg.setFrom(new InternetAddress(from));
} else {
throw new MessagingException(
"The mail message requires a valid 'From' address.");
}
if (subject != null)
mailMsg.setSubject(subject);
if (content != null)
mailMsg.setText(content);
//Finally, send the mail message; throws a 'SendFailedException'
//if any of the message's recipients have an invalid address
Transport.send(mailMsg);
} catch (Exception exc) {
throw exc;
}
}//sendMessage
private void handleMessages(HttpServletRequest request, PrintWriter out) throws IOException, ServletException {
HttpSession httpSession = request.getSession();
String user = (String) httpSession.getAttribute("user");
String password = (String) httpSession.getAttribute("pass");
String popAddr = (String) httpSession.getAttribute("pop");
Store popStore = null;
Folder folder = null;
if (! check(popAddr))
popAddr = EmailBean.DEFAULT_SERVER;
try {
if ((! check(user)) || (! check(password)))
throw new ServletException("A valid username and password is required to check email.");
Properties properties = System.getProperties();
Session session = Session.getDefaultInstance(properties);
popStore = session.getStore("pop3");
popStore.connect(popAddr, user, password);
folder = popStore.getFolder("INBOX");
if (! folder.exists())
throw new ServletException("An 'INBOX' folder does not exist for the user.");
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();
int msgLen = messages.length;
if (msgLen == 0)
out.println("<h2>The INBOX folder does not yet contain any email messages.</h2>");
for (int i = 0; i < msgLen; i++){
displayMessage(messages[i], out);
out.println("<br /><br />");
}
} catch (Exception exc) {
out.println("<h2>Sorry, an error occurred while accessing the email messages.</h2>");
out.println(exc.toString());
} finally {
try{
if (folder != null)
folder.close(false);
if (popStore != null)
popStore.close();
} catch (Exception e) { }
}
}//handleMessages
private void displayMessage(Message msg, PrintWriter out) throws MessagingException, IOException {
if (msg != null && msg.getContent() instanceof String){
if (msg.getFrom()[0] instanceof InternetAddress) {
out.println("Message received from: " + ((InternetAddress)msg.getFrom()[0]).getAddress() +"<br />");
}
out.println("Message received on: " + msg.getReceivedDate() +"<br />");
out.println("Message content type: " + msg.getContentType() +"<br />");
out.println("Message content type: " + (String) msg.getContent());
} else{
out.println("<h2>The received email message was not of a text content type.</h2>");
}
}//displayMessage
public void setSmtpHost(String host){
if (check(host)){
this.smtpHost = host;
} else {
this.smtpHost = EmailBean.DEFAULT_SERVER;
}
}//setTo
public void setTo(String to){
if (check(to)){
this.to = to;
} else {
this.to = EmailBean.DEFAULT_TO;
}
}//setTo
public void setFrom(String from){
if (check(from)){
this.from = from;
} else {
this.from = EmailBean.DEFAULT_FROM;
}
}//setFrom
public void setContent(String content){
if (check(content)){
this.content = content;
} else {
this.content = EmailBean.DEFAULT_CONTENT;
}
}//setContent
public void setSubject(String subject){
if (check(subject)){
this.subject = subject;
} else {
this.subject = EmailBean.DEFAULT_SUBJECT;
}
}//setSubject
private boolean check(String value){
if(value == null || value.equals(""))
return false;
return true;
}
}
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24187
    
  34

Moving to "Other Java APIs", which is where JavaMail questions belong.


[Jess in Action][AskingGoodQuestions]
Dimitri Dimo
Greenhorn

Joined: Jan 25, 2003
Posts: 3
Hello? Anyone here?
Scott Odom
Greenhorn

Joined: Apr 20, 2004
Posts: 1
Hi Dimitri,
I am getting the same error. Did you ever find a resolution? I just upgraded from Tomcat 4.1.18 to Tomcat 5, and am now getting the error.
Thanks,
Scott
Maulin Vasavada
Ranch Hand

Joined: Nov 04, 2001
Posts: 1871
Hi Scott and Dimitri
Can you let us know where in classpath you have put those jars?
In Tomcat you can try putting there in the lib folder where other Jars are already there. As I remember last from Tomcat experience you can also modify setclasspath.batch or setclasspath.sh to include the jar file wherever youput.
Thanks
maulin
 
Consider Paul's rocket mass heater.
 
subject: JavaMail not working