Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: [JAVA] e-mail

  1. #1

    [JAVA] e-mail

    Ciao!
    Scrivo per capire meglio il funzionamento di un programma che manda e-mail, postato tempo fa da LeleFT qua

    Non ho capitol'esempio di utilizzo, dove va scritto l'ultimo codice postato:
    Esempio di utilizzo Nella fretta ho scordato una cosa abbastanza importante: il classico esempio di utilizzo della classe. Vediamo in sostanza, come può essere banalmente utilizzata la classe. Supponiamo di disporre di un server SMTP che non necessita di autenticazione (tipo i server intranet delle aziende) all'indirizzo 192.168.1.2 e di voler inviare una mail dall'indirizzo "info@miodominimo.it" all'indirizzo destinatario "pippo@altrohost.it". codice: String mailServer = "192.168.1.2"; String[] recipient {"pippo@altrohost.it"}; String[] cc = new String[0]; // Non necessito di destinatari in copia String subject = "Messaggio di prova"; // L'oggetto della mail String[] messaggio = {"Ciao Pippo!", "Come va?", "Questa è una mail di prova."}; String fileName = "C:\\Allegato.zip"; // Allego un file ZIP String userName = ""; // Non necessito di autenticazione String password = ""; // Non necessito di autenticazione String nomeUtente = "Azienda"; // Il nome che verrà visualizzato al destinatario String from = "info@miodominio.it"; String nomeFileVis = "Ordine.zip"; // Il destinatario vedrà un allegato che si chiama "Ordine.zip" String confLettura = "info@miodominio.it"; // Voglio la conferma di lettura boolean requireLogin = false; // Non necessito di login boolean confReceipt = false; // Non mi interessa la notifica di recapito // Ora invio la mail: SendMail.sendMail(mailServer, recipient, cc, subject, messaggio, fileName, userName, password, nomeUtente, from, nomeFileVis, confLettura, confReceipt); La versione della classe che ho postato non tiene conto che l'utente potrebbe non voler spedire alcun allegato... le correzioni da apportare per poter offrire all'utente tale possibilità sono poche: è sufficiente inserire delle apposite condizioni sulla presenza o meno di un valore consistente per i campi relativi all'allegato. Se, invece, disponiamo di un server che richiede autenticazione (esempio, un server a disposizione da parte del nostro ISP), il precedente esempio diventerebbe: codice: String mailServer = "192.168.1.2"; String[] recipient {"pippo@altrohost.it"}; String[] cc = new String[0]; // Non necessito di destinatari in copia String subject = "Messaggio di prova"; // L'oggetto della mail String[] messaggio = {"Ciao Pippo!", "Come va?", "Questa è una mail di prova."}; String fileName = "C:\\Allegato.zip"; // Allego un file ZIP String userName = "nome_utente"; // Necessito di autenticazione String password = "password"; // Necessito di autenticazione String nomeUtente = "Azienda"; // Il nome che verrà visualizzato al destinatario String from = "info@miodominio.it"; String nomeFileVis = "Ordine.zip"; // Il destinatario vedrà un allegato che si chiama "Ordine.zip" String confLettura = "info@miodominio.it"; // Voglio la conferma di lettura boolean requireLogin = true; // Necessito di login boolean confReceipt = false; // Non mi interessa la notifica di recapito // Ora invio la mail: SendMail.sendMail(mailServer, recipient, cc, subject, messaggio, fileName, userName, password, nomeUtente, from, nomeFileVis, confLettura, confReceipt); Ciao.
    ?
    Grazie in anticipo!
    Gato

  2. #2
    Ops, non si capisce niente...
    Esempio di utilizzo
    Nella fretta ho scordato una cosa abbastanza importante: il classico esempio di utilizzo della classe.
    Vediamo in sostanza, come può essere banalmente utilizzata la classe.

    Supponiamo di disporre di un server SMTP che non necessita di autenticazione (tipo i server intranet delle aziende) all'indirizzo 192.168.1.2 e di voler inviare una mail dall'indirizzo "info@miodominimo.it" all'indirizzo destinatario "pippo@altrohost.it".

    codice:
    String mailServer = "192.168.1.2";
    String[] recipient {"pippo@altrohost.it"};
    String[] cc = new String[0];   // Non necessito di destinatari in copia
    String subject = "Messaggio di prova";   // L'oggetto della mail
    String[] messaggio = {"Ciao Pippo!", "Come va?", "Questa è una mail di prova."};
    String fileName = "C:\\Allegato.zip";   // Allego un file ZIP
    String userName = "";   // Non necessito di autenticazione
    String password = "";   // Non necessito di autenticazione
    String nomeUtente = "Azienda";   // Il nome che verrà visualizzato al destinatario
    String from = "info@miodominio.it";
    String nomeFileVis = "Ordine.zip";   // Il destinatario vedrà un allegato che si chiama "Ordine.zip"
    String confLettura = "info@miodominio.it";   // Voglio la conferma di lettura
    boolean requireLogin = false;   // Non necessito di login
    boolean confReceipt = false;   // Non mi interessa la notifica di recapito
    
    // Ora invio la mail:
    SendMail.sendMail(mailServer, recipient, cc, subject, messaggio, fileName, userName, password, nomeUtente, from, nomeFileVis, confLettura, confReceipt);
    La versione della classe che ho postato non tiene conto che l'utente potrebbe non voler spedire alcun allegato... le correzioni da apportare per poter offrire all'utente tale possibilità sono poche: è sufficiente inserire delle apposite condizioni sulla presenza o meno di un valore consistente per i campi relativi all'allegato.

    Se, invece, disponiamo di un server che richiede autenticazione (esempio, un server a disposizione da parte del nostro ISP), il precedente esempio diventerebbe:

    codice:
    String mailServer = "192.168.1.2";
    String[] recipient {"pippo@altrohost.it"};
    String[] cc = new String[0];   // Non necessito di destinatari in copia
    String subject = "Messaggio di prova";   // L'oggetto della mail
    String[] messaggio = {"Ciao Pippo!", "Come va?", "Questa è una mail di prova."};
    String fileName = "C:\\Allegato.zip";   // Allego un file ZIP
    String userName = "nome_utente";   // Necessito di autenticazione
    String password = "password";   // Necessito di autenticazione
    String nomeUtente = "Azienda";   // Il nome che verrà visualizzato al destinatario
    String from = "info@miodominio.it";
    String nomeFileVis = "Ordine.zip";   // Il destinatario vedrà un allegato che si chiama "Ordine.zip"
    String confLettura = "info@miodominio.it";   // Voglio la conferma di lettura
    boolean requireLogin = true;   // Necessito di login
    boolean confReceipt = false;   // Non mi interessa la notifica di recapito
    
    // Ora invio la mail:
    SendMail.sendMail(mailServer, recipient, cc, subject, messaggio, fileName, userName, password, nomeUtente, from, nomeFileVis, confLettura, confReceipt);
    Ciao.
    Gato

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323
    Che cosa non hai capito di preciso?

    PS: Non so quanto sia aggiornato/efficiente quel codice... è piuttosto vecchiotto e l'ho abbandonato pure io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Non ho capito dove devo usare questo:
    codice:
    String mailServer = "192.168.1.2";
    String[] recipient {"pippo@altrohost.it"};
    String[] cc = new String[0];   // Non necessito di destinatari in copia
    String subject = "Messaggio di prova";   // L'oggetto della mail
    String[] messaggio = {"Ciao Pippo!", "Come va?", "Questa è una mail di prova."};
    String fileName = "C:\\Allegato.zip";   // Allego un file ZIP
    String userName = "nome_utente";   // Necessito di autenticazione
    String password = "password";   // Necessito di autenticazione
    String nomeUtente = "Azienda";   // Il nome che verrà visualizzato al destinatario
    String from = "info@miodominio.it";
    String nomeFileVis = "Ordine.zip";   // Il destinatario vedrà un allegato che si chiama "Ordine.zip"
    String confLettura = "info@miodominio.it";   // Voglio la conferma di lettura
    boolean requireLogin = true;   // Necessito di login
    boolean confReceipt = false;   // Non mi interessa la notifica di recapito
    
    // Ora invio la mail:
    SendMail.sendMail(mailServer, recipient, cc, subject, messaggio, fileName, userName, password, nomeUtente, from, nomeFileVis, confLettura, confReceipt);
    Gato

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323
    Nel punto in cui desideri inviare la mail.
    Quel codice predispone tutti i parametri per l'invio della mail:
    - Server SMTP da contattare
    - Elenco dei destinatari della mail
    - Elenco degli eventuali destinatari in copia (CC)
    - Oggetto della mail
    - Corpo del messaggio della mail (espresso come array di stringhe, ovvero di righe del corpo della mail)
    - Eventuale nome del file da allegare alla mail
    - Eventuale nome utente da usare per l'autenticazione sul server SMTP
    - Eventuale password da usare per l'autenticazione sul server SMTP
    - Nome da visualizzare nel campo "Da:" da parte di chi riceve la mail
    - Indirizzo e-mail effettivo del mittente
    - Nome da visualizzare per l'allegato (da parte di chi riceve la mail, es. il mio file di chiama "Pippo", ma voglio che chi riceve la mail lo veda come "Pluto")
    - Eventuale indirizzo e-mail a cui inviare la conferma di lettura
    - Un booleano che indica se è necessario usare l'autenticazione per il server SMTP
    - Un booleano che indica se è necessario ricevere la notifica di recapito.

    L'ultima riga effettua la chiamata al metodo "sendMail()" della classe che avevo postato in quella discussione, passando, appunto, tutti i parametri settati prima.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Ma quindi non mi basta farmi un'altra classe, del tipo:
    codice:
    public class SettaggioMail {
    
    
    
    String mailServer = "197.168.2.1";
    
    String[] recipient = {"Gianni@mail.it"};
    
    String[] cc = new String[0];   // Non necessito di destinatari in copia
    
    String subject = "Messaggio di prova";   // L'oggetto della mail
    
    String[] messaggio = {"Ciao Pippo!", "Come va?", "Questa è una mail di prova."};
    
    String fileName = "/home/jekotojava/Activity_diagram.gif";   // Allego un file ZIP
    
    String userName = "Pippo@mail.it";   // Necessito di autenticazione
    
    String password = "passwiord";   // Necessito di autenticazione
    
    String nomeUtente = "Francesco";   // Il nome che verrà visualizzato al destinatario
    
    String from = "Gianni@mail.it";
    
    String nomeFileVis = "";   // Il destinatario vedrà un allegato che si chiama "Ordine.zip"
    
    String confLettura = "Gianni@mail";   // Voglio la conferma di lettura
    
    boolean requireLogin = true;   // Necessito di login
    
    boolean confReceipt = false;   // Non mi interessa la notifica di recapito
    
    
    
    // Ora invio la mail:
    
    SendMail.sendMail( mailServer,
                      recipient,
                      cc,
                      subject,
                      messaggio,
                      fileName,
                      userName,
    
                      password,
                      nomeUtente,
                      from,
                      nomeFileVis,
                      confLettura,
                      confReceipt);
    
    }
    Gato

  7. #7
    Il programma che vorrei fare è abbastanza fine a se' stesso, non mi serve un output grafico, ma mi basterebbe lanciare l'invio della mail da linea di comando...
    Gato

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323
    Puio tranquillamente farlo in un altra classe, ma non nel modo che hai postato prima, che non ha alcun senso, né compilerebbe: stai cercando di richiamare un metodo dal nulla. I metodi si possono richiamare solo dall'interno di altri metodi.

    Le inizializzazioni delle variabili le puoi fare anche a livello di classe, ma l'ultima istruzione la devi comunque inserire all'interno di un metodo, che sarà poi richiamato da dove interessa a te.

    Nessuno ti vieta di mettere tutto quel codice dentro al metodo main() della tua applicazione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Scusa, ma sono proprio confuso: come dicevi tu ieri, richiamavo un metodo dal nulla (il che è giustamente impossibile). Quindi, ho dichiarato un Main nella classe,ma non lo compilava. allora, ho provato a "suddividere" la classe in due classi (Main e SettaggioMail) e, all'interno del Main invocare il costruttore di SettaggioMail, ma anche così non compila. Se provo a postare il codice così com'è ora, riesci a farmi capire dove sbaglio? Scusa, ma sono un po' arrugginito in Java, dato che sono mesi che lavoro in rpg (linguaggio puramente procedurale).

    codice:
    import java.io.*;
    import java.net.*;
    import java.lang.String.*;
    
    public class SettaggioMail {
      public static void main (String args[]) {
    
    
    
            String mailServer = "192.168.1.1";
            String[] recipient = {"pippo@mail.it"};
            String[] cc = new String[0];   // Non necessito di destinatari in copia
            String subject = "Messaggio di prova";   // L'oggetto della mail
            String[] messaggio = {"Ciao Pippo!", "Come va?", "Questa è una mail di prova."};
            String fileName = "/home/A_Download/Activity_diagram.gif";   // Allego un file ZIP
            String userName = "pippo";   // Necessito di autenticazione
            String password = "password";   // Necessito di autenticazione
            String nomeUtente = "Francesco";   // Il nome che verrà visualizzato al destinatario
            String from = "pluto@mail.it";
            String nomeFileVis = "";   // Il destinatario vedrà un allegato che si chiama "Ordine.zip"
            String confLettura = "pippo@mail.it";   // Voglio la conferma di lettura
           boolean requireLogin = true;   // Necessito di login
           boolean confReceipt = false;   // Non mi interessa la notifica di recapito
          //Costruttore
          /*    SettaggioMail SM = new SettaggioMail();*/
    
    
    
    
    // Ora invio la mail:
    SendMail.sendMail (mailServer,
                       recipient,
                       cc,
                       subject,
                       messaggio,
                       fileName,
                       userName,
                       password,
                       nomeUtente,
                       from,
                       nomeFileVis,
                       confLettura,
                       confReceipt);
      }
    
    
    }
    grazie
    Gato

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323
    Se non compila significa che ti dà degli errori... se non li posti non so proprio da che parte cominciare a cercare...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.