 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
mrby Guest
|
Posted: Thu Apr 29, 2004 4:47 pm Post subject: Problem about JavaMail |
|
|
Hi,
I'm just trying to use JavaMail and have a strange problem.
(See the code snippet below)
When running it, the exception error message is:
errorjavax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.MessagingException: Could not connect to SMTP host: localhost,
port: 25;
nested exception is:
java.net.ConnectException: Connection refused
the problem is in the line with //!!!!
If I comment this line out, it works fine.
The purpose of this line to invoke check_server is to
have a check first.
Who can give me some hints?
Thanks much!
================================================
import java.sql.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
/** Class handles sending email messages. */
public class email {
private static String mail_host = null;
public static void main (String[] args) {
mail_host = "mrby.8866.org"; //which is a valid mail server
if ( check_server(mail_host) ) //!!!!!
send();
}
public static void send ()
{
String to = "root@localhost";
String subject = "hello,world";
String total_message = "test email";
String from = "email (AT) def (DOT) com";
String host = mail_host;
Properties props = new Properties();
props.put("mail.smtp.host", host );
Session session = Session.getDefaultInstance(props, null);
try {
// create a message
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipients( Message.RecipientType.TO,
InternetAddress.parse(to) );
msg.setSubject(subject);
msg.setText(total_message);
Transport.send(msg);
System.out.println(host);
}
catch (MessagingException mex) {
System.out.println("error"+mex.toString());
}
}
// Method to check if the SMTP service on a host is available
private static boolean check_server( String host )
{
boolean flag;
Transport tr = null;
try {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props,null);
tr = session.getTransport("smtp");
tr.connect(host,null,null);
flag = true;
tr.close();
}
catch (MessagingException mx) {
flag = false;
}
finally {
try {
if (tr != null) {
tr.close();
}
}
catch (MessagingException mex) {}
}
return flag;
}
}
|
|
| Back to top |
|
 |
GaryM Guest
|
Posted: Thu Apr 29, 2004 6:39 pm Post subject: Re: Problem about JavaMail |
|
|
"mrby" <bianying (AT) msn (DOT) com> wrote in news:c6rbng$2bo6$1 (AT) mail (DOT) cn99.com:
| Quote: | Who can give me some hints?
Thanks much!
|
I think you should not call tr.connect(host, null, null). Put the
host in the session, then call tr.connect(). Reason? Not 100% on
this, but I think the connect(String, String, String) requires all 3
params or 3 nulls (which prompts the underlying code to do a
different connect). I don't think it can handle the host, null, null
and is defaulting to the Session which defaults to "localhost" if
undefined. Note in your example there is no "mail.smtp.host" property
defined at that point in the code. You do this only in send().
There are a couple of things with this example you could change that
would make your life easier. check_server does not need the host as a
parm, as that parm is a class variable and is visible to all methods.
Likewise no need for a copy of it to be made in the send() method.
I would consider making the Session instance an instance variable and
initializing it in the constructor/initializer accordingly.
HTH,
Gary
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|