You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Jan Ulrich <j-...@gmx.de> on 2003/01/05 17:20:18 UTC

SMTP-Auth problem

Hello,
I'm trying to send a mail with a SMTP-Server, which needs SMTP-Auth.
The code attached to this posting works perfect if executed from a 
shell, but i need this function in a servlet running on a Tomcat 4.1 
webcontainer.

The DEBUG in a shell says:
<<DEBUG SMTP: useEhlo true, useAuth true

The Tomcat debug however says:
<<DEBUG SMTP: useEhlo true, useAuth false

and the sending fails. It looks as if Tomcat does not support SMTP Auth. 
Is there a possibility to replace some Tomcat jars with jars from J2EE?

Any help is appreciated, thanks

Jan Ulrich


import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

class sendMessageApp {
   static String host = "mail.gmx.net";
   static String user = "somebody";
   static String password = "secret";
   static boolean debug = true;
   static String toAddress = "to@you";
   static String fromAddress = "from@me";

   public static void main(String[] argv) {
     // set the host
     Properties props = new Properties();
     props.put("mail.smtp.host",host);
     props.put("mail.smtp.auth","true");
     //create some properties and get the default session
     Session session = Session.getDefaultInstance(props, null);
     session.setDebug(true);

     try {
       System.out.println("Getting Transport for smtp");
       Transport tr = session.getTransport("smtp");
       try {
           tr.connect("mail.gmx.net",user, password);
       }
       catch (MessagingException ex) {
         ex.printStackTrace();
         System.exit(1);
       }

       // create a message
       Message msg = new MimeMessage(session);

       // set the from
       InternetAddress from = new InternetAddress(fromAddress);
       msg.setFrom(from);
       InternetAddress[] address = {new InternetAddress(toAddress)};
       msg.setRecipients(Message.RecipientType.TO, address);
       msg.setSubject("This is a test");

       msg.setContent("hello","text/plain");
       msg.saveChanges();
       System.out.println("Before sending...");
       tr.sendMessage(msg, address);
	  }
     catch (javax.mail.MessagingException mex) {
       mex.printStackTrace();
   }
   }
}


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: SMTP-Auth problem

Posted by Tomcat User <to...@secristfamily.com>.
From: "Jan Ulrich" <j-...@gmx.de>
Sent: Sunday, January 05, 2003 9:20 AM
Subject: SMTP-Auth problem


> Hello,
> I'm trying to send a mail with a SMTP-Server, which needs SMTP-Auth.
> The code attached to this posting works perfect if executed from a
> shell, but i need this function in a servlet running on a Tomcat 4.1
> webcontainer.
>
> The DEBUG in a shell says:
> <<DEBUG SMTP: useEhlo true, useAuth true
>
> The Tomcat debug however says:
> <<DEBUG SMTP: useEhlo true, useAuth false
>
> and the sending fails. It looks as if Tomcat does not support SMTP Auth.
> Is there a possibility to replace some Tomcat jars with jars from J2EE?
>
> Any help is appreciated, thanks
>
> Jan Ulrich
>
>
> import java.util.*;
> import javax.mail.*;
> import javax.mail.internet.*;
>
> class sendMessageApp {
>    static String host = "mail.gmx.net";
>    static String user = "somebody";
>    static String password = "secret";
>    static boolean debug = true;
>    static String toAddress = "to@you";
>    static String fromAddress = "from@me";
>
>    public static void main(String[] argv) {
>      // set the host
>      Properties props = new Properties();
>      props.put("mail.smtp.host",host);
>      props.put("mail.smtp.auth","true");
>      //create some properties and get the default session
>      Session session = Session.getDefaultInstance(props, null);
>      session.setDebug(true);
>
>      try {
>        System.out.println("Getting Transport for smtp");
>        Transport tr = session.getTransport("smtp");
>        try {
>            tr.connect("mail.gmx.net",user, password);
>        }
>        catch (MessagingException ex) {
>          ex.printStackTrace();
>          System.exit(1);
>        }
>
>        // create a message
>        Message msg = new MimeMessage(session);
>
>        // set the from
>        InternetAddress from = new InternetAddress(fromAddress);
>        msg.setFrom(from);
>        InternetAddress[] address = {new InternetAddress(toAddress)};
>        msg.setRecipients(Message.RecipientType.TO, address);
>        msg.setSubject("This is a test");
>
>        msg.setContent("hello","text/plain");
>        msg.saveChanges();
>        System.out.println("Before sending...");
>        tr.sendMessage(msg, address);
>   }
>      catch (javax.mail.MessagingException mex) {
>        mex.printStackTrace();
>    }
>    }
> }
>
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
>
>

I played around with smtp_auth under tomcat 4.1.12 and got it to work.
 here is the key method I used which works for me...

Randy

/**
 * @author Randy Secrist
 *
 * This method is used for writing messages to an SMTP server using
 * SMTP authentication.  This uses a digest, and not TLS.
 */
public static void sendBytes(String uid, String pw, String to, String
from, String host, String msgtxt,
    String subject, boolean debug) throws MessagingException {

    // set some default parameters
    if (from == null) from = "some.email@somewhere.com";
    if (host == null) host = smtpHost;
    if (msgtxt == null) msgtxt = "MessageBody";
    if (subject == null) subject = "Subject of Email";

    // Create the Java Mail Session
    // (uses mail.jar, smtp.jar, activation.jar)
    Properties props = System.getProperties();
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.auth", "true");
    Session session = Session.getInstance(props, null);
    session.setDebug(debug);

    try {
        // create a message
        MimeMessage msg = new MimeMessage(session);
        msg.setFrom(new InternetAddress(from));
        InternetAddress[] address = {new InternetAddress(to)};
        msg.setRecipients(Message.RecipientType.TO, address);
        msg.setSubject(subject);

        // create and fill the first message part
        MimeBodyPart mbp1 = new MimeBodyPart();
        mbp1.setText(msgtxt);

        // create the Multipart and its parts to it
        Multipart mp = new MimeMultipart();
        mp.addBodyPart(mbp1);

        // add the Multipart to the message
        msg.setContent(mp);

        // set the Date: header
        msg.setSentDate(new Date());

        // authenticate & send the message
        Transport transport = session.getTransport("smtp");
        transport.connect(host, uid, pw);
        msg.saveChanges();
        transport.sendMessage(msg, msg.getAllRecipients());
        transport.close();
        transport = null;
    }
    catch (MessagingException mex) {
        mex.printStackTrace();
        Exception ex = null;
        if ((ex = mex.getNextException()) != null) {
            ex.printStackTrace();
        }
        throw mex;
    }
    finally {
        // Turn off authentication - or next non authenticated call will
fail.
        props.remove("mail.smtp.auth");
        session = Session.getInstance(props);
        session = null;
    }
}



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: SMTP-Auth problem

Posted by Randy Secrist <to...@secristfamily.com>.
Jan Ulrich wrote:

> Hello,
> I'm trying to send a mail with a SMTP-Server, which needs SMTP-Auth.
> The code attached to this posting works perfect if executed from a 
> shell, but i need this function in a servlet running on a Tomcat 4.1 
> webcontainer.
>
> The DEBUG in a shell says:
> <<DEBUG SMTP: useEhlo true, useAuth true
>
> The Tomcat debug however says:
> <<DEBUG SMTP: useEhlo true, useAuth false
>
> and the sending fails. It looks as if Tomcat does not support SMTP 
> Auth. Is there a possibility to replace some Tomcat jars with jars 
> from J2EE?
>
> Any help is appreciated, thanks
>
> Jan Ulrich
>
>
> import java.util.*;
> import javax.mail.*;
> import javax.mail.internet.*;
>
> class sendMessageApp {
>   static String host = "mail.gmx.net";
>   static String user = "somebody";
>   static String password = "secret";
>   static boolean debug = true;
>   static String toAddress = "to@you";
>   static String fromAddress = "from@me";
>
>   public static void main(String[] argv) {
>     // set the host
>     Properties props = new Properties();
>     props.put("mail.smtp.host",host);
>     props.put("mail.smtp.auth","true");
>     //create some properties and get the default session
>     Session session = Session.getDefaultInstance(props, null);
>     session.setDebug(true);
>
>     try {
>       System.out.println("Getting Transport for smtp");
>       Transport tr = session.getTransport("smtp");
>       try {
>           tr.connect("mail.gmx.net",user, password);
>       }
>       catch (MessagingException ex) {
>         ex.printStackTrace();
>         System.exit(1);
>       }
>
>       // create a message
>       Message msg = new MimeMessage(session);
>
>       // set the from
>       InternetAddress from = new InternetAddress(fromAddress);
>       msg.setFrom(from);
>       InternetAddress[] address = {new InternetAddress(toAddress)};
>       msg.setRecipients(Message.RecipientType.TO, address);
>       msg.setSubject("This is a test");
>
>       msg.setContent("hello","text/plain");
>       msg.saveChanges();
>       System.out.println("Before sending...");
>       tr.sendMessage(msg, address);
>       }
>     catch (javax.mail.MessagingException mex) {
>       mex.printStackTrace();
>   }
>   }
> }
>
>
> -- 
> To unsubscribe, e-mail:   
> <ma...@jakarta.apache.org>
> For additional commands, e-mail: 
> <ma...@jakarta.apache.org>
>
I played around with smtp_auth under tomcat 4.1.12 and got it to work.
  here is the key method I used which works for me...

Randy

/**
  * @author Randy Secrist
  *
  * This method is used for writing messages to an SMTP server using
  * SMTP authentication.  This uses a digest, and not TLS.
  */
public static void sendBytes(String uid, String pw, String to, String
from, String host, String msgtxt,
     String subject, boolean debug) throws MessagingException {

     // set some default parameters
     if (from == null) from = "some.email@somewhere.com";
     if (host == null) host = smtpHost;
     if (msgtxt == null) msgtxt = "MessageBody";
     if (subject == null) subject = "Subject of Email";

     // Create the Java Mail Session
     // (uses mail.jar, smtp.jar, activation.jar)
     Properties props = System.getProperties();
     props.put("mail.smtp.host", host);
     props.put("mail.smtp.auth", "true");
     Session session = Session.getInstance(props, null);
     session.setDebug(debug);

     try {
         // create a message
         MimeMessage msg = new MimeMessage(session);
         msg.setFrom(new InternetAddress(from));
         InternetAddress[] address = {new InternetAddress(to)};
         msg.setRecipients(Message.RecipientType.TO, address);
         msg.setSubject(subject);

         // create and fill the first message part
         MimeBodyPart mbp1 = new MimeBodyPart();
         mbp1.setText(msgtxt);

         // create the Multipart and its parts to it
         Multipart mp = new MimeMultipart();
         mp.addBodyPart(mbp1);

         // add the Multipart to the message
         msg.setContent(mp);

         // set the Date: header
         msg.setSentDate(new Date());

         // authenticate & send the message
         Transport transport = session.getTransport("smtp");
         transport.connect(host, uid, pw);
         msg.saveChanges();
         transport.sendMessage(msg, msg.getAllRecipients());
         transport.close();
         transport = null;
     }
     catch (MessagingException mex) {
         mex.printStackTrace();
         Exception ex = null;
         if ((ex = mex.getNextException()) != null) {
             ex.printStackTrace();
         }
         throw mex;
     }
     finally {
         // Turn off authentication - or next non authenticated call will
fail.
         props.remove("mail.smtp.auth");
         session = Session.getInstance(props);
         session = null;
     }
}



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>