Visualizzazione dei risultati da 1 a 5 su 5

Discussione: invio mail

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132

    invio mail

    Ciao a tutti, ho un problema nell'invio di una mail.
    Mi da errore :
    codice:
    com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.3 Requested action aborted; user not authenticated

    codice:
               Properties props = new Properties();               
               props.setProperty("mail.transport.protocol", "smtp");
               props.setProperty("mail.host", "smtp.live.com");
               props.setProperty("mail.user", "nome@hotmail.it");
               props.setProperty("mail.password", "***"); 
               props.setProperty("mail.smtp.port", "25");
                    
               Session mailSession = Session.getDefaultInstance(props, null);
               Transport transport = mailSession.getTransport();
    
               MimeMessage message = new MimeMessage(mailSession);
               message.setSubject("PROVA MAIL 1");
               message.setContent("Testo prova mail 1", "text/plain");
               message.addRecipient(Message.RecipientType.TO,
                    new InternetAddress("elvis@presley.org"));
    
               transport.connect();
               transport.sendMessage(message,
                   message.getRecipients(Message.RecipientType.TO));
               transport.close();

    Credo di sbagliare nell'impostazione smtp, ma dove ?

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132

    libreria

    dimenticavo, uso libreria "javax.mail"

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    prova ad aggiungere:

    codice:
    prop.put("mail.smtp.starttls.enable", "true");
    prop.put("mail.smtp.auth", "true");

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132

    trovato

    grazie, ma mi dava sempre errore
    codice:
    javax.mail.AuthenticationFailedException: failed to connect, no password specified?
    non so se sia un problema di hotmail ?
    io ho risolto così
    codice:
                    jLabel7.setText("invio posta");
                    jProgressBar1.setValue(40);
                    Properties props = new Properties();
    
                    props.setProperty("mail.transport.protocol", "smtp");
                    props.setProperty("mail.host", "smtp.live.com");
                    props.setProperty("mail.user", "nome@hotmail.it");
                    props.setProperty("mail.password", "***"); 
                    props.setProperty("mail.smtp.port", "25");
                    props.setProperty("mail.smtp.auth"         , "true");
    
                    Session session = Session.getDefaultInstance(props,
    				new javax.mail.Authenticator(){
                        protected PasswordAuthentication getPasswordAuthentication()
                    { 
                                return new     PasswordAuthentication("nome@hotmail.it","***");
                                
                    }});
     
                    
                    MimeMessage message = new MimeMessage(session);
    		message.setSender(new InternetAddress("nome@hotmail.it"));
    		message.setSubject("mail 1");
                    // allegato
                    BodyPart messageBodyPart = new MimeBodyPart();
                    messageBodyPart.setText("messaggio con allegato");
                    Multipart multipart = new MimeMultipart();
                    multipart.addBodyPart(messageBodyPart);
                    messageBodyPart = new MimeBodyPart();
                    String filename = "provaPosta.dat";
                    DataSource source = new FileDataSource("posta/provaPosta.dat");
                    messageBodyPart.setDataHandler(new DataHandler(source));
                    messageBodyPart.setFileName(filename);
                    multipart.addBodyPart(messageBodyPart);
                    message.setContent(multipart );
             
                    if ("elvis@presley.org".indexOf(',') > 0){ 
                        message.setRecipients(Message.RecipientType.TO,
                                InternetAddress.parse("elvis@presley.org"));
    		}
                    else{
                        message.setRecipient(Message.RecipientType.TO,
                                new InternetAddress("elvis@presley.org"));
                     }
             
                    Transport.send(message);
    
                    jLabel7.setText("fine");
                    jProgressBar1.setValue(100);
               
                } catch (MessagingException ex) {
                    Logger.getLogger(posta.class.getName()).log(Level.SEVERE, null, ex);
                }
                }
    non ho capito bene la funzione di :
    codice:
    if ("elvis@presley.org".indexOf(',') > 0){ 
    message.setRecipients(Message.RecipientType.TO,
     InternetAddress.parse("elvis@presley.org")); } 
    else{ 
    message.setRecipient(Message.RecipientType.TO,
     new InternetAddress("elvis@presley.org")); }
    ma comunque funziona, almeno con hotmail.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    Re: trovato

    Originariamente inviato da andreu
    non ho capito bene la funzione di :
    codice:
    if ("elvis@presley.org".indexOf(',') > 0){ 
    message.setRecipients(Message.RecipientType.TO,
     InternetAddress.parse("elvis@presley.org")); } 
    else{ 
    message.setRecipient(Message.RecipientType.TO,
     new InternetAddress("elvis@presley.org")); }
    ma comunque funziona, almeno con hotmail.
    Il metodo d'istanza indexOf va alla ricerca della stringa passata come parametro (nel tuo caso la virgola) all'interno della stringa su cui è invocato (nel tuo caso "elvis@presley.org") e restituisce l'indice della prima occorrenza della stringa cercata , quindi restituirà un intero maggiore o uguale a zero se la stringa cercata è presente , un intero minore di zero se la stringa non c'è...fatto questo controllo se la virgola c'è si richiama "parse" di InternetAddress che a quanto dice la documentazione "Parse the given comma separated sequence of addresses into InternetAddress objects. Addresses must follow RFC822 syntax. "
    trad: converte la data sequenza di indirizzi separati da virgola in oggetti InternetAddress (infatti restituisce un array di InternetAddress) . Gli indirizzi devono seguire la sintassi RFC822."

    nel caso in cui la virgola non sia presente si va nell'else invocando il costruttore di InternetAddress con la tua stringa-indirizzo


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.