what exact version you are using? also are you sure the recipients
exist
at
the james server or do you try to deliver the mailmto a remote
smtpserver?
bye
norman
Am Freitag, 14. Oktober 2011 schrieb Garvice Eakins<
garviceeak...@gmail.com
:
I am having problems sending SMTP messages from James3.0 using a
simple
java
application using javamail.
Here is the example I am using
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 pass, String host) {
this(user, pass, host, false);
}
public MailClient(String user, String pass, String host, boolean
debug){
from = user + '@' + host;
authentication = new PasswordAuthentication(user, pass);
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");
//props.put("mail.smtp.auth", "true");
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.setFrom(new InternetAddress(from));
msg.addRecipients(Message.********RecipientType.TO<http://**
Message.RecipientType.TO<http:****//Message.RecipientType.TO<h**
ttp://Message.RecipientType.TO<http://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& SHOW_MESSAGES)> 0;
boolean clear = (mode& CLEAR_MESSAGES)> 0;
String action =
(show ? "Show" : "") +
(show&& 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&& show)
{
System.out.println("No messages in inbox");
}
for (int i = 0; i< 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();
}
}
public class JamesConfigTest
{
public static void main(String[] args)
throws Exception
{
// CREATE CLIENT INSTANCES
MailClient redClient = new MailClient("r...@smo.tld","red"**
******,
"192.168.55.119");
MailClient greenClient = new MailClient("gr...@smo.tld",
"green",
"192.168.55.119");
MailClient blueClient = new MailClient("b...@smo.tld","*******
*blue",
"192.168.55.119");
// 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.********getPasswordAuthentication();
redClient.sendMessage(
"garvi...@h5sw.com",
"Testing blue from red",
"This is a test message");
//greenClient.********getPasswordAuthentication();
greenClient.sendMessage(
"b...@smo.tld",
"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);
}
}
Here is the output from the console
Exception in thread "main" javax.mail.********
SendFailedException:
Invalid
Addresses;
nested exception is:
com.sun.mail.smtp.********SMTPAddressFailedException: 530 5.7.1
Authentication
Required
at com.sun.mail.smtp.********SMTPTransport.rcptTo(****
SMTPTransport.java:1835)
at com.sun.mail.smtp.********SMTPTransport.sendMessage(**
SMTPTransport.java:1098)
at javax.mail.Transport.send0(********Transport.java:195)
at javax.mail.Transport.send(********Transport.java:124)
at MailClient.sendMessage(********MailClient.java:55)
at JamesConfigTest.main(********JamesConfigTest.java:20)
Caused by: com.sun.mail.smtp.********SMTPAddressFailedException:
530
5.7.1
Authentication Required
at com.sun.mail.smtp.********SMTPTransport.rcptTo(****
SMTPTransport.java:1733)
... 5 more
Here is the output in the JamesServer.log:
INFO 13:38:51,436 | james.smtpserver | ID=128768368 Connection
established
from Garvice-MacBook.local (192.168.55.116)
INFO 13:38:51,477 | james.smtpserver | ID=128768368
org.apache.james.smtpserver.**********AuthRequiredToRelayRcptHook:
result=2
(DENY)
INFO 13:38:51,479 | james.smtpserver | ID=128768368
org.apache.james.smtpserver.********JamesRcptCmdHandler: 530
[5.7.1
Authentication
Required]
INFO 13:38:51,496 | james.smtpserver | ID=128768368 Connection
closed
for
Garvice-MacBook.local (192.168.55.116)
Here is the SMTP:
INFO 13:38:51,436 | james.smtpserver | ID=128768368 Connection
established
from Garvice-MacBook.local (192.168.55.116)
INFO 13:38:51,477 | james.smtpserver | ID=128768368
org.apache.james.smtpserver.**********AuthRequiredToRelayRcptHook:
result=2
(DENY)
INFO 13:38:51,479 | james.smtpserver | ID=128768368
org.apache.james.smtpserver.********JamesRcptCmdHandler: 530
[5.7.1
Authentication
Required]
INFO 13:38:51,496 | james.smtpserver | ID=128768368 Connection
closed
for
Garvice-MacBook.local (192.168.55.116)
If I uncomment the line //props.put("mail.smtp.auth", "true");
I get this error message:
Exception in thread "main" javax.mail.********SendFailedException:
Invalid
Addresses;
nested exception is:
com.sun.mail.smtp.********SMTPAddressFailedException: 503 5.7.1
Incorrect
Authentication for Specified Email Address
at com.sun.mail.smtp.********SMTPTransport.rcptTo(****
SMTPTransport.java:1835)
at com.sun.mail.smtp.********SMTPTransport.sendMessage(**
SMTPTransport.java:1098)
at javax.mail.Transport.send0(********Transport.java:195)
at javax.mail.Transport.send(********Transport.java:124)
at MailClient.sendMessage(********MailClient.java:55)
at JamesConfigTest.main(********JamesConfigTest.java:20)
Caused by: com.sun.mail.smtp.********SMTPAddressFailedException:
503
5.7.1
Incorrect
Authentication for Specified Email Address
at com.sun.mail.smtp.********SMTPTransport.rcptTo(****
SMTPTransport.java:1686)
... 5 more
With these Logfiles:
SMTPServer.log
INFO 13:38:37,155 | james.smtpserver | ID=192071567 Connection
established
from Garvice-MacBook.local (192.168.55.116)
INFO 13:38:37,221 | james.smtpserver | ID=192071567
org.apache.james.smtpserver.************
SenderAuthIdentifyVerification****
**
**RcptHook:
result=2
(DENY)
INFO 13:38:37,223 | james.smtpserver | ID=192071567
org.apache.james.smtpserver.********JamesRcptCmdHandler: 503
[5.7.1
Incorrect
Authentication for Specified Email Address]
INFO 13:38:37,248 | james.smtpserver | ID=192071567 Connection
closed
for
Garvice-MacBook.local (192.168.55.116)
James-Server.log
INFO 13:38:37,155 | james.smtpserver | ID=192071567 Connection
established
from Garvice-MacBook.local (192.168.55.116)
INFO 13:38:37,221 | james.smtpserver | ID=192071567
org.apache.james.smtpserver.************
SenderAuthIdentifyVerification****
**
**RcptHook:
result=2
(DENY)
INFO 13:38:37,223 | james.smtpserver | ID=192071567
org.apache.james.smtpserver.********JamesRcptCmdHandler: 503
[5.7.1
Incorrect
Authentication for Specified Email Address]
INFO 13:38:37,248 | james.smtpserver | ID=192071567 Connection
closed
for
Garvice-MacBook.local (192.168.55.116)
Any help with this would be great. I'm not really sure what I"m
doing
wrong.
I don't know if it's a setting in james or a property I need to set
in
JavaMail for the Transport.
Also here is the SMTPServer.xml file
<smtpserver enabled="true">
<bind>0.0.0.0:25</bind>
<connectionBacklog>200</********connectionBacklog>
<tls socketTLS="false" startTLS="false">
</tls>
<connectiontimeout>360</********connectiontimeout>
<connectionLimit> 0</connectionLimit>
<connectionLimitPerIP> 0</connectionLimitPerIP>
<authorizedAddresses>127.0.0.********0/8<http://127.0.0.0/8>
</authorizedAddresses>
<authRequired>false</********authRequired>
<verifyIdentity>false</********verifyIdentity>
<maxmessagesize>0</********maxmessagesize>
<addressBracketsEnforcement>********true</******
addressBracketsEnforcement>
<handlerchain enableJmx="true">
<handler
class="org.apache.james.********smtpserver.fastfail.****
ValidRcptHandler"/>
<handler class="org.apache.james.********smtpserver.**
CoreCmdHandlerLoader"/>
</handlerchain>
</smtpserver>
--
Eric