title: Using James Server in Eclipse With JavaMail
body: <p>Would anyone be able to tell me how I can go about using James server as my server with Java in Eclipse?</p>
  
  <p>I'm trying to test the two classes posted below but i get the following error:
  Exception in thread "main" javax.mail.AuthenticationFailedException: Authentication failed.</p>
  
  <pre><code>public class JamesConfigTest
  {
  public static void main(String[] args)
  throws Exception
  {
  // CREATE CLIENT INSTANCES
  MailClient redClient = new MailClient("red", "localhost");
  MailClient greenClient = new MailClient("green", "localhost");
  MailClient blueClient = new MailClient("blue", "localhost");
  
  // CLEAR EVERYBODY'S INBOX
  redClient.checkInbox(MailClient.CLEAR_MESSAGES);
  greenClient.checkInbox(MailClient.CLEAR_MESSAGES);
  blueClient.checkInbox(MailClient.CLEAR_MESSAGES);
  Thread.sleep(500); // Let the server catch up
  
  // SEND A COUPLE OF MESSAGES TO BLUE (FROM RED AND GREEN)
  redClient.sendMessage(
    "blue@localhost",
    "Testing blue from red",
    "This is a test message");
  greenClient.sendMessage(
    "blue@localhost",
    "Testing blue from green",
    "This is a test message");
  Thread.sleep(500); // Let the server catch up
  
  // LIST MESSAGES FOR BLUE (EXPECT MESSAGES FROM RED AND GREEN)
  blueClient.checkInbox(MailClient.SHOW_AND_CLEAR);
  }
  }
  
  
  import java.io.*;
  import java.util.*;
  import javax.mail.*;
  import javax.mail.internet.*;
  
  public class MailClient
  extends Authenticator
  {
  public static final int SHOW_MESSAGES = 1;
  public static final int CLEAR_MESSAGES = 2;
  public static final int SHOW_AND_CLEAR =
  SHOW_MESSAGES + CLEAR_MESSAGES;
  
  protected String from;
  protected Session session;
  protected PasswordAuthentication authentication;
  
  public MailClient(String user, String host)
  {
  this(user, host, false);
  }
  
  public MailClient(String user, String host, boolean debug)
  {
  from = user + '@' + host;
  authentication = new PasswordAuthentication(user, user);
  Properties props = new Properties();
  props.put("mail.user", user);
  props.put("mail.host", host);
  props.put("mail.debug", debug ? "true" : "false");
  props.put("mail.store.protocol", "pop3");
  props.put("mail.transport.protocol", "smtp");
  session = Session.getInstance(props, this);
  }
  
  public PasswordAuthentication getPasswordAuthentication()
  {
  return authentication;
  }
  
  public void sendMessage(
  String to, String subject, String content)
    throws MessagingException
  {
  System.out.println("SENDING message from " + from + " to " + to);
  System.out.println();
  MimeMessage msg = new MimeMessage(session);
  msg.addRecipients(Message.RecipientType.TO, to);
  msg.setSubject(subject);
  msg.setText(content);
  Transport.send(msg);
  }
  
  public void checkInbox(int mode)
     throws MessagingException, IOException
  {
  if (mode == 0) return;
  boolean show = (mode &amp; SHOW_MESSAGES) &gt; 0;
  boolean clear = (mode &amp; CLEAR_MESSAGES) &gt; 0;
  String action =
    (show ? "Show" : "") +
    (show &amp;&amp; clear ? " and " : "") +
    (clear ? "Clear" : "");
  System.out.println(action + " INBOX for " + from);
  Store store = session.getStore();
  store.connect();
  Folder root = store.getDefaultFolder();
  Folder inbox = root.getFolder("inbox");
  inbox.open(Folder.READ_WRITE);
  Message[] msgs = inbox.getMessages();
  if (msgs.length == 0 &amp;&amp; show)
  {
    System.out.println("No messages in inbox");
  }
  for (int i = 0; i &lt; msgs.length; i++)
  {
    MimeMessage msg = (MimeMessage)msgs[i];
    if (show)
    {
      System.out.println("    From: " + msg.getFrom()[0]);
      System.out.println(" Subject: " + msg.getSubject());
      System.out.println(" Content: " + msg.getContent());
    }
    if (clear)
    {
      msg.setFlag(Flags.Flag.DELETED, true);
    }
    }
    inbox.close(true);
    store.close();
    System.out.println();
    }
    }
  </code></pre>