You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Rick McGuire (JIRA)" <de...@geronimo.apache.org> on 2006/03/31 16:51:09 UTC
[jira] Updated: (GERONIMO-1797) Mail attachments are not getting
recognized as MIME parts
[ http://issues.apache.org/jira/browse/GERONIMO-1797?page=all ]
Rick McGuire updated GERONIMO-1797:
-----------------------------------
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.
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
> 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.
--
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