geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick McGuire (JIRA)" <...@geronimo.apache.org>
Subject [jira] Updated: (GERONIMO-1797) Mail attachments are not getting recognized as MIME parts
Date Fri, 31 Mar 2006 14:52:33 GMT
     [ http://issues.apache.org/jira/browse/GERONIMO-1797?page=all ]

Rick McGuire updated GERONIMO-1797:
-----------------------------------

     Patch Info: [Patch Available]
    Description: 
Mail sent with attachments are not getting the headers set properly, so the attachment is
not recognized by mail clients as being attachment data.  The following short program illustrates
this:

//compiles against geronimo j2ee spec jar

import java.io.PrintWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import java.util.Properties;

public class xx {
  public static void main (String [] args)
    throws IOException, AddressException, NoSuchProviderException, MessagingException
  {
      String username = "rickmcg";
      String password = "stenos";
      String smtphost = "smtp.gmail.com";

      Properties props = new Properties();
      props.put("mail.smtp.auth", "true");
      props.put("mail.debug", "true");
      props.put("mail.smtp.starttls.enable", "true");
      props.put("mail.smtp.port", "587");
      Session session = Session.getDefaultInstance(props);
      session.setDebug(true);
      Message message = new MimeMessage(session);
      message.setFrom(new InternetAddress("rickmcg@gmail.com"));
      message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("rick@us.ibm.com"));
      message.setSubject("test subject");
      message.setText("test message");
      BodyPart messageBodyPart1 = new MimeBodyPart();
      messageBodyPart1.setText("part 1");
      BodyPart messageBodyPart2 = new MimeBodyPart();
      DataSource dataSource = new FileDataSource("xx.java");
      messageBodyPart2.setDataHandler(new DataHandler(dataSource));
      messageBodyPart2.setFileName("xx.java");
      Multipart multipart = new MimeMultipart();
      multipart.addBodyPart(messageBodyPart1);
      multipart.addBodyPart(messageBodyPart2);
      message.setContent(multipart);

//choose A or B

//A
//===>>> geronimo fails SILENTLY on following line (no message is received)
//===>>> but sun jars work fine
// Transport.send(message);

//B
//===>>> if the classpath contains the sequence: geronimo-mail-jar, activation-jar
//===>>>    then the following lines error out complaining about can't find "smtp"
//===>>> if the classpath contains the sequence: geronimo-mail-jar, sun-mail-jar,
activation-jar
//===>>>    then the following lines work but the parts are all messed up (show up
as one big chunk)
//===>>> if the classpath contains the sequence: sun-mail-jar, activation-jar
//===>>>    then the following lines work perfectly fine
      Transport transport = session.getTransport("smtp");
      transport.connect(smtphost, 587, username, password);
      System.out.println("Sending message");
      transport.sendMessage(message, InternetAddress.parse("rick@us.ibm.com"));
      transport.close();
  }
}


There are multiple problems with the written out headers:

1)  No MIME-Version header is getting set.
2)  The Content-Type for the type level message is not getting set.  Since this contains the
mime boundary string, it results in the message getting corrupted.
3) Message header names are getting written as all lower case.

  was:
Mail sent with attachments are not getting the headers set properly, so the attachment is
not recognized by mail clients as being attachment data.  The following short program illustrates
this:

//compiles against geronimo j2ee spec jar

import java.io.PrintWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import java.util.Properties;

public class xx {
  public static void main (String [] args)
    throws IOException, AddressException, NoSuchProviderException, MessagingException
  {
      String username = "rickmcg";
      String password = "stenos";
      String smtphost = "smtp.gmail.com";

      Properties props = new Properties();
      props.put("mail.smtp.auth", "true");
      props.put("mail.debug", "true");
      props.put("mail.smtp.starttls.enable", "true");
      props.put("mail.smtp.port", "587");
      Session session = Session.getDefaultInstance(props);
      session.setDebug(true);
      Message message = new MimeMessage(session);
      message.setFrom(new InternetAddress("rickmcg@gmail.com"));
      message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("rick@us.ibm.com"));
      message.setSubject("test subject");
      message.setText("test message");
      BodyPart messageBodyPart1 = new MimeBodyPart();
      messageBodyPart1.setText("part 1");
      BodyPart messageBodyPart2 = new MimeBodyPart();
      DataSource dataSource = new FileDataSource("xx.java");
      messageBodyPart2.setDataHandler(new DataHandler(dataSource));
      messageBodyPart2.setFileName("xx.java");
      Multipart multipart = new MimeMultipart();
      multipart.addBodyPart(messageBodyPart1);
      multipart.addBodyPart(messageBodyPart2);
      message.setContent(multipart);

//choose A or B

//A
//===>>> geronimo fails SILENTLY on following line (no message is received)
//===>>> but sun jars work fine
// Transport.send(message);

//B
//===>>> if the classpath contains the sequence: geronimo-mail-jar, activation-jar
//===>>>    then the following lines error out complaining about can't find "smtp"
//===>>> if the classpath contains the sequence: geronimo-mail-jar, sun-mail-jar,
activation-jar
//===>>>    then the following lines work but the parts are all messed up (show up
as one big chunk)
//===>>> if the classpath contains the sequence: sun-mail-jar, activation-jar
//===>>>    then the following lines work perfectly fine
      Transport transport = session.getTransport("smtp");
      transport.connect(smtphost, 587, username, password);
      System.out.println("Sending message");
      transport.sendMessage(message, InternetAddress.parse("rick@us.ibm.com"));
      transport.close();
  }
}


There are multiple problems with the written out headers:

1)  No MIME-Version header is getting set.


> Mail attachments are not getting recognized as MIME parts
> ---------------------------------------------------------
>
>          Key: GERONIMO-1797
>          URL: http://issues.apache.org/jira/browse/GERONIMO-1797
>      Project: Geronimo
>         Type: Bug
>   Components: mail
>     Reporter: Rick McGuire
>      Fix For: 1.2

>
> Mail sent with attachments are not getting the headers set properly, so the attachment
is not recognized by mail clients as being attachment data.  The following short program illustrates
this:
> //compiles against geronimo j2ee spec jar
> import java.io.PrintWriter;
> import java.io.FileReader;
> import java.io.FileWriter;
> import java.io.IOException;
> import javax.mail.*;
> import javax.mail.internet.*;
> import javax.activation.DataHandler;
> import javax.activation.DataSource;
> import javax.activation.FileDataSource;
> import java.util.Properties;
> public class xx {
>   public static void main (String [] args)
>     throws IOException, AddressException, NoSuchProviderException, MessagingException
>   {
>       String username = "rickmcg";
>       String password = "stenos";
>       String smtphost = "smtp.gmail.com";
>       Properties props = new Properties();
>       props.put("mail.smtp.auth", "true");
>       props.put("mail.debug", "true");
>       props.put("mail.smtp.starttls.enable", "true");
>       props.put("mail.smtp.port", "587");
>       Session session = Session.getDefaultInstance(props);
>       session.setDebug(true);
>       Message message = new MimeMessage(session);
>       message.setFrom(new InternetAddress("rickmcg@gmail.com"));
>       message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("rick@us.ibm.com"));
>       message.setSubject("test subject");
>       message.setText("test message");
>       BodyPart messageBodyPart1 = new MimeBodyPart();
>       messageBodyPart1.setText("part 1");
>       BodyPart messageBodyPart2 = new MimeBodyPart();
>       DataSource dataSource = new FileDataSource("xx.java");
>       messageBodyPart2.setDataHandler(new DataHandler(dataSource));
>       messageBodyPart2.setFileName("xx.java");
>       Multipart multipart = new MimeMultipart();
>       multipart.addBodyPart(messageBodyPart1);
>       multipart.addBodyPart(messageBodyPart2);
>       message.setContent(multipart);
> //choose A or B
> //A
> //===>>> geronimo fails SILENTLY on following line (no message is received)
> //===>>> but sun jars work fine
> // Transport.send(message);
> //B
> //===>>> if the classpath contains the sequence: geronimo-mail-jar, activation-jar
> //===>>>    then the following lines error out complaining about can't find
"smtp"
> //===>>> if the classpath contains the sequence: geronimo-mail-jar, sun-mail-jar,
activation-jar
> //===>>>    then the following lines work but the parts are all messed up (show
up as one big chunk)
> //===>>> if the classpath contains the sequence: sun-mail-jar, activation-jar
> //===>>>    then the following lines work perfectly fine
>       Transport transport = session.getTransport("smtp");
>       transport.connect(smtphost, 587, username, password);
>       System.out.println("Sending message");
>       transport.sendMessage(message, InternetAddress.parse("rick@us.ibm.com"));
>       transport.close();
>   }
> }
> There are multiple problems with the written out headers:
> 1)  No MIME-Version header is getting set.
> 2)  The Content-Type for the type level message is not getting set.  Since this contains
the mime boundary string, it results in the message getting corrupted.
> 3) Message header names are getting written as all lower case.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message