Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > JavaMail sending problem and solution

Reply
Thread Tools

JavaMail sending problem and solution

 
 
Bobby Martin
Guest
Posts: n/a
 
      05-19-2004
I had chronic problems with sending email via smtp. I could sign in
via a mail client and send to a remote user just fine, but JavaMail
refused to send to any but local users, citing a 550 relaying problem.
All of the references I could find on the web told me to talk to my
mail admin, but I'm he and I also knew that if my mail client could do
it, so could I.

This solution requires that you log into the mail server as a normal
email user - you will have to create an (or use an existing) account.
You turn on smtp authorization by setting the a property you pass in
to get a session: the property is mail.smtp.auth and you set it to
"true". Then you create an Authenticator that returns a
PasswordAuthentication with your username and password in it.

Here's an excerpt of working code:

Authenticator authenticator = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(FROM, PASSWORD);
}
};

Session mailSession = Session.getInstance(getMailProperties(),
authenticator);

Message email = new MimeMessage(mailSession);
try {
email.setFrom(new InternetAddress(FROM));
email.setSentDate(new Date());

email.setRecipients(Message.RecipientType.TO,
stringsToInternetAddresses(to));
email.setRecipients(Message.RecipientType.CC,
stringsToInternetAddresses(cc));
email.setRecipients(Message.RecipientType.BCC,
stringsToInternetAddresses(bcc));
email.setSubject(subject);
email.setText(body);

Transport.send(email);
retval = true;
} catch (Exception e) {
}

My getMailProperties includes the following:
mail.smtp.host=some.mail.host.com
mail.smtp.auth=true

I just post this here for posterity so maybe someone else doesn't go
through the hell I did to figure this out
 
Reply With Quote
 
 
 
 
GaryM
Guest
Posts: n/a
 
      05-20-2004
http://www.velocityreviews.com/forums/(E-Mail Removed) (Bobby Martin) wrote in
news:(E-Mail Removed) om:

> I just post this here for posterity so maybe someone else doesn't go
> through the hell I did to figure this out
>


Bobby, I am curious why Transport.connect(host, user, password) did not
work for you?

Gary
 
Reply With Quote
 
 
 
 
Roedy Green
Guest
Posts: n/a
 
      05-20-2004
On 19 May 2004 12:16:09 -0700, (E-Mail Removed) (Bobby Martin)
wrote or quoted :

>My getMailProperties includes the following:
>mail.smtp.host=some.mail.host.com
>mail.smtp.auth=true
>
>I just post this here for posterity so maybe someone else doesn't go
>through the hell I did to figure this out


That technique is astoundingly general. You just set up your
authenticator and Java deals with any challenges of any sort ever
after. It is feels almost magic the first time you use it. I used it
in the Replicator to deal with protected HTTP documents.
see http://mindprod.com/jgloss/authentication.html

However, I did not use it in my bulk emailer program. I just used the
more conventional:

Properties props = System.getProperties();
if ( CustConfig.needPasswordToSend )
{
props.setProperty ( "mail.smtp.auth", "true" );
}
// Get a Session object
session = Session.getDefaultInstance( props, null );

....

Transport transport = session.getTransport( sendProtocol );
transport.connect( sendHost, sendPort, sendLoginID, sendPassword );


--
Canadian Mind Products, Roedy Green.
Coaching, problem solving, economical contract programming.
See http://mindprod.com/jgloss/jgloss.html for The Java Glossary.
 
Reply With Quote
 
Bobby Martin
Guest
Posts: n/a
 
      05-21-2004
GaryM <(E-Mail Removed)> wrote in message news:<Xns94EF4BC168555R3344324357788499939@216.168 .3.44>...
> (E-Mail Removed) (Bobby Martin) wrote in
> news:(E-Mail Removed) om:

[SNIP]
> Bobby, I am curious why Transport.connect(host, user, password) did not
> work for you?
>
> Gary


I ran my smtp connection through an echoing tunnel I built for just
such occasions. Even using Transport.connect, JavaMail did not send
AUTH LOGIN to the server followed by an encrypted username and
password, while Outlook did. When I turned on mail.smtp.auth and
added an Authenticator, JavaMail did send the AUTH LOGIN.

I can't tell you why it behaves that way - it surprised me very much
that Transport.connect seemed took a user & password but didn't use
them in any way. But I can tell you from experience that, at least
for me, it does behave that way.

Bobby
 
Reply With Quote
 
Bobby Martin
Guest
Posts: n/a
 
      05-21-2004
Roedy Green <(E-Mail Removed)> wrote in message news:<(E-Mail Removed)>. ..
> On 19 May 2004 12:16:09 -0700, (E-Mail Removed) (Bobby Martin)
> wrote or quoted :

[SNIP]
>
> Properties props = System.getProperties();
> if ( CustConfig.needPasswordToSend )
> {
> props.setProperty ( "mail.smtp.auth", "true" );
> }
> // Get a Session object
> session = Session.getDefaultInstance( props, null );
>
> ...
>
> Transport transport = session.getTransport( sendProtocol );
> transport.connect( sendHost, sendPort, sendLoginID, sendPassword );


Hmm, I should have read both replies before I responded to the first
one I'm not entirely sure that I tried turning on mail.smtp.auth,
using Transport.connect, and not using an Authenticator. It's
possible that would have worked for me. Something for me to
experiment with

Thanks for the insight!
Bobby
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
javamail not sending mlabhard Java 1 06-07-2006 06:21 PM
Problems sending email javamail sickness Java 3 05-17-2006 11:36 AM
sending UUENCODE mail using javamail API swapexcel@gmail.com Java 1 04-13-2006 06:58 PM
JavaMail sending email with no body content Steve D. Perkins Java 1 12-08-2004 11:27 PM
problem sending javamail Nilambari Java 2 12-26-2003 08:27 AM



Advertisments