Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    115

    [JAVA] Invio email tramite javax.mail.*

    Salve a tutti,
    sto cercando di realizzare un semplice applicativo per l'invio di email e utilizzo le API di javax.mail.* e javax.internet.*.
    Posto il codice
    codice:
    try {
        Properties props = new Properties();
        props.put( "mail.smtp.host", "smtp.email.it" );
    
        Session session = Session.getDefaultInstance(props, null);
        Message message = new MimeMessage(session);
    
        InternetAddress from = new InternetAddress( mittente );
        InternetAddress to[] = InternetAddress.parse( destinatario );
    
        message.setFrom( from );
        message.setRecipients( Message.RecipientType.TO, to );
        message.setText(testoMessaggio);
    
        Transport.send(message);
        }
        catch(MessagingException e)
        {
          e.printStackTrace();
          System.out.println("Non è stato possibile inviare il suo messaggio");
        }
        System.out.println("Il messaggio è stato spedito correttamente");
      }
    ma mi da il seguente errori in runtime

    javax.mail.SendFailedException: Invalid Addresses;
    nested exception is:
    class com.sun.mail.smtp.SMTPAddressFailedException: 553 <_indirizzomittente_>: Sender address rejected: not logged in as owner

    at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTranspo rt.java:1130)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTr ansport.java:525)
    at javax.mail.Transport.send0(Transport.java:151)
    at javax.mail.Transport.send(Transport.java:80)
    at Principale.main(Principale.java:46)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at com.intellij.rt.execution.application.AppMain.main (AppMain.java:78)

    Io penso sia un errore di mancata autenticazione, se è così come posso far autenticare l'utente???
    Grazie

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao....prova con questo codice.... io non l'ho usato ancora ma potrebbe andare:


    codice:
    import javax.mail.Authenticator;
    import javax.mail.PasswordAuthentication;
    
    
    public class MyAuthenticator extends Authenticator{
      
      private PasswordAuthentication passwordAutentication = new PasswordAuthentication("nome.cognome@email.it", "password");
      
      public MyAuthenticator(){
        
      }
      
      public PasswordAuthentication getPasswordAuthentication() {
        return passwordAutentication;
      }
    }


    codice:
    import java.io.*;
    import javax.servlet.http.*;
    import org.apache.struts.action.*;
    import org.apache.struts.util.MessageResources;
    
    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;
    import java.io.*;
    
    
    public class EmailAction extends Action{
      
      /**
       * Oggetto properties tramite cui settare la sessione
       */
      private Properties pro;
      
      /**
       * Oggetto sessione
       */
      private Session sessione;
      
      /**
       * Oggetto messaggio
       */
      private Message messaggio;
      
      /**
       * Indirizzo e-mail mittente
       */
      private InternetAddress da;
      
      /**
       * Indirizzi e-mail destinatari
       */
      private InternetAddress[] a;
      
     
     
      public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
      throws Exception {
        
        String smtp = "smtp.email.it";
        this.setProperties(smtp);
        sendMessaggio("nome.cognome@email.it", "nome.cognome@email.it", "Oggetto", "testo messaggio", false);
        
        return new ActionForward("home.kibuz", true);
        
      }
      
      /**
       * Costruttore della classe che setta, nelle properties, l'smtp utilizzato
       *
       * La spedizione di mail con l'smtp di email.it richiede l'autenticazione quindi è necessario inserire la riga pro.put("mail.smtp.auth", "true");
       *
       * @param po -l'smtp utilizzato per inviare il messaggio
       */
      public void setProperties(String po){
        
        pro = System.getProperties();
        pro.put("mail.smtp.host", po);
        
        // ****************************************
     ****************************************
    **************
        pro.put("mail.smtp.auth", "true");
        // ****************************************
     ****************************************
    **************
        
      }
      
      /**
       * Metodo che si occupa di settare la sessione
       */
      private void setSessione(){
        
        
        // ****************************************
     ****************************************
    **************
        javax.mail.Authenticator auth = new MyAuthenticator(); // this class return a new PasswordAuthentication(usr, pwd) object
        
        
        sessione = javax.mail.Session.getInstance(pro, auth);
        // ****************************************
     ****************************************
    **************    
        
        sessione.setDebug(true);
      }
      
      /**
       * Metodo che si occupa di settare, inizializzare il messaggio e di inviarlo
       * @param daChi -mittente
       * @param aChi  -destinatari
       * @param oggetto -oggetto e-mail
       * @param testoMessaggio -testo dell'email
       * @param autoritation -true se bisogna autorizzarsi, false altrimenti
       * @throws AddressException eccezione che si può verificare se l'indirizzo e-mail
       *                          dovesse essere non corretto
       * @throws MessagingException eventuale altra eccezione
       */
      public void sendMessaggio( String daChi, String aChi, String oggetto, String testoMessaggio, boolean autoritation ){
        
        try{
          
          setSessione();
          String host = pro.getProperty("mail.smtp.host");
          
          System.out.println( "["+host+"]" );
          Transport t = sessione.getTransport( "smtp" );
          messaggio = new MimeMessage(sessione);
          da = new InternetAddress(daChi);
          a = InternetAddress.parse(aChi);
          
          messaggio.setFrom(da);
          messaggio.setRecipients(Message.RecipientType.TO, a);
          messaggio.setSubject(oggetto);
          messaggio.setSentDate(new Date());
          messaggio.setText(testoMessaggio);
          //messaggio.setDataHandler(this.allegato);
          
         // il controllo sull'autoritation non è necessario.
         // il metodo send chiama anche il metodo connect
         /*
          if( autoritation ){
            
            String log = "caterina.curti";
            String psw = "kiuhyewpo";
            t.connect( host, log, psw );
          }else{
            
            t.connect();
          }
          */
          t.send( messaggio );
    
          t.close();
        }catch( AddressException ae ){
          
          ae.printStackTrace();
        }catch( MessagingException me ){
          
          me.printStackTrace();
        }
      }
    }
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    115

    [java] Richiedere + informazioni in un InputDialog

    Ciao, grazie mille, ho risolto col tuo aiuto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    150
    ...ho letto il post sono arrivato quasi a vedere l' arcobaleno...
    ...ho un piccolo problemino...
    ...devo ricevere conferma per la ricezione della mail che invio...
    ...l' utente xxxx ha letto...
    ...quale metodo posso usare????
    ...grazie mille!!!

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.