Newsgroup: it.comp.java
Titolo: javamail e gmail

Buonasera a tutti,
sto cercando di creare un piccolo programma che usi javamail.
Tutto funziona perfettamente se riempio il "recipiente" TO.
Se invece uso BCC ho un eccezione che vi riporto
javax.mail.internet.ParseException: Expected parameter value, got "null"
         at javax.mail.internet.ParameterList.<init>(ParameterList.java:256)
         at 
javax.mail.internet.ContentDisposition.<init>(ContentDisposition.java:100)
         at 
javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1360)
         at 
javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1030)
         at 
javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:416)
         at 
javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1307)
         at 
javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2074)
         at 
javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2042)
         at javax.mail.Transport.send(Transport.java:117)
Il mittente è gmail.
Mi sapete dire cosa c'è che non và?
Io mi limito a modificare questo codice
----------------------------------------------------------
for (int i = 0; i < to.size();i++){
         msg.addRecipient(
Message.RecipientType.TO
, new 
InternetAddress(to.get(i)));
     }
----------------------------------------------------------
in quest'altro
----------------------------------------------------------
for (int i = 0; i < to.size();i++){
         msg.addRecipient(Message.RecipientType.BCC, new 
InternetAddress(to.get(i)));
     }
----------------------------------------------------------
grazie

 Mi sapete dire cosa c'� che non v�?


 divagando.
Lo avevo presente, Infatti è per questo che ho chiesto se settando una
stringa vuota come TO funzionava.
Ti quoto il il CCN..

 non valido?
Si mi lancia una AddressException mettendo indirizzo vuoto

Ayrton ha scritto:

Tra l'altro mi lancia la stessa eccezione se uso CC invece di BCC.
Se riempio il campo TO con un indirizzo e gli altri in BCC mi lancia 
sempre la solita eccezione.
Possibile che gmail non permetta BCC e CC?

 Possibile che gmail non permetta BCC e CC?
attiva il debug sulla session (setDebug(true) o dalle properties) e 
togliti questo dubbio analizzando il dialogo col server.
purtroppo il mestiere del programmatore è questo, la pappa scodellata non 
la si trova quasi mai.
-- 
++ Fino all'anno scorso avevo un solo difetto. Ero presuntuoso.
http://unopuntozero.wordpress.com/
http://www.flickr.com/photos/marko_po/

Allora,
una notizia nuova.
Se avvio il pc e non faccio partire il mio client di posta tutto 
funziona a meraviglia (anche il BCC).
Se lancio thunderbird si genera quell'eccezione e se lo chiudo 
l'eccezione rimane...
Ora provo con il setDebug che mi ha detto rootkit e vi faccio sapere
Se avete idea del perché thunderbird e javamail si scazzottano avvisate.
Penso sia un problema di sessione perché thunderbird mi gestisce 
l'account che uso come sorgente in javamail...
Però chiudendolo mi sarei aspettato che tutto tornasse a funzionare...
mah...

 quell'eccezione e se lo chiudo l'eccezione rimane...
secondo me stai tirando a caso andando a cercare le coincidenze invece 
che i bug.


Vi incollo nuovamente l'eccezione
javax.mail.internet.ParseException: Expected parameter value, got "null"
Il parametro che era a null era il path dell'allegato. Non controllavo 
se esisteva e se era valido. Corretto quello funge come mi aspetto

Ecco il codice. Magari in futuro servirà a qualcuno.
public void sendMail(List<String> to, String message, String subject, 
String attachmentPath) throws AddressException, MessagingException, 
UnsupportedEncodingException {
         boolean debug = false;
         Properties props = new Properties();
         props.put("mail.smtp.host", "
smtp.gmail.com
");
         props.put("mail.smtp.starttls.enable", "true");
         props.put("mail.smtp.auth", "true");
         Session session = Session.getDefaultInstance(props, new 
MyAuthenticator());
         session.setDebug(debug);
	// create a message
         Message msg = new MimeMessage(session);
         // set the from and to address
         InternetAddress addressFrom = new 
InternetAddress("
indi...@gmail.com
");
         msg.setFrom(addressFrom);
         for (int i = 0; i < to.size(); i++) {
             msg.addRecipient(
Message.RecipientType.TO
, new 
InternetAddress(to.get(i)));
         }
         msg.setSubject(subject);
         Multipart multipart = new MimeMultipart();
         BodyPart messageBodyPart = new MimeBodyPart();
         messageBodyPart.setText(message);
         multipart.addBodyPart(messageBodyPart);
         File attachment = new File(attachmentPath);
         if ((attachment.exists()) && (attachment.isFile()) ) {
             //allegato
             messageBodyPart = new MimeBodyPart();
             DataSource source = new FileDataSource(attachmentPath);
             messageBodyPart.setDataHandler(new DataHandler(source));
             messageBodyPart.setFileName(attachment.getName());
             multipart.addBodyPart(messageBodyPart);
         }
         msg.setContent(multipart);
         Transport.send(msg);
     }
     private class MyAuthenticator extends Authenticator {
         MyAuthenticator() {
             super();
         }
         @Override
         protected PasswordAuthentication getPasswordAuthentication() {
             return new PasswordAuthentication("
indi...@gmail.com
", 
"password");
         }
     }