Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [java] mandare una mail

    Ciao a tutti,
    qualcuno potrebbe aiutarmi?
    ...devo mandare una mail da una servlet java.

    Tutto sembra funzionare, ma se provo a mandare mail ad indirizzi con dominio libero.it mi torna indietro un delivery status che dice in succo: "...other o undefined security status..." riportando i vari indirizzi a cui è stata mandata la mail...

    codice:
    import java.io.*;
    import java.net.*;
    
    public class SendMail {
      static  Socket  socket;
      static  DataInputStream in;
      static  DataOutputStream out;
      static  PrintStream prout; // non usato
    
     public static void sendMail(String mailServer,
                                 String[] recipient,
                                 String[] cc,
                                 String subject,
                                 String messaggio,
                                 String userName,
                                 String from)throws Exception {
      //try {
        Socket s = new Socket(mailServer, 25);
        BufferedReader in = new BufferedReader( new InputStreamReader(s.getInputStream(), "8859_1") );
        BufferedWriter out = new BufferedWriter( new OutputStreamWriter(s.getOutputStream(), "8859_1") );
    
        //String boundary = "Dat_Sep_Str_#COD#";   // Servirà??  -- Data Separator String --
    
        sendln(in, out, "EHLO " + userName);
        sendln(in, out, "MAIL FROM: <"+ from + ">");
        for (int i=0; i<recipient.length; i++)
           sendln(in, out, "RCPT TO: <" + recipient[i] + ">" );
        for (int i=0; i<cc.length; i++)
           sendln(in, out, "RCPT CC: <" + cc[i] + ">");
        sendln(in, out, "DATA");
        sendln(out, "MIME-Version: 1.0");
        sendln(out, "Subject: " + subject);
        sendln(out, "From: " + userName + " <" + from + ">");
        for (int i=0; i<recipient.length; i++)
           sendln(out, "To: <" + recipient[i] + ">");
        for (int i=0; i<cc.length; i++)
           sendln(out, "Cc: <" + cc[i] + ">");
        /*sendln(out, "Content-Type: multipart/mixed; boundary=\"" + boundary +"\"");
        sendln(out, "\r\n--" + boundary);*/
    
        // Send the body
        sendln(out, "Content-Type: text/plain; charset=\"us-ascii\"\r\n");
        sendln(out, messaggio);
        //sendln(out, "\r\n--" +  boundary );
    
        // send the attachment
        /*String nomeFile = (new File(fileName)).getName();
        sendln(out, "Content-Type:image/gif; name="+nomeFile);
        sendln(out, "Content-Disposition: attachment;filename=\""+fileName+"\"");
        sendln(out, "Content-transfer-encoding: base64\r\n");
        MIMEBase64.encode(fileName, out);
        sendln(out, "\r\n--" + boundary);*/
    
        //sendln(out, "\r\n\r\n--" + boundary + "--\r\n");
        sendln(in, out,".");
        sendln(in, out, "QUIT");
        s.close();
       // }
     // catch (Exception e) {
     //   e.printStackTrace();
     //   }
      }
    
     public static void sendln(BufferedReader in, BufferedWriter out, String s) {
      try {
        out.write(s + "\r\n");
        out.flush();
        Thread.sleep(1000);
        s = in.readLine();
        }
      catch (Exception e) {
        e.printStackTrace();
        }
       }
    
     public static void sendln(BufferedWriter out, String s) {
       try {
        out.write(s + "\r\n");
        out.flush();
        }
       catch (Exception e) {
        e.printStackTrace();
        }
       }
     }
    Questa è la classe java...trovata tra l'altro su questo forum (grazie!)...e sotto la semplicissima servlet.



    codice:
    public class MailSender extends HttpServlet {
        
        /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
         * @param request servlet request
         * @param response servlet response
         */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            String [] destinatari = {"mail@mail.it","mail@libero.it"}; //destinatari
            String [] cc = {"blabla@bla.it"};
            String hostName = "smtp.mail.it"; // server smtp
            String oggetto = "oggetto";
            String messaggio = "ciao ...";
            String nomeUtente = "Prova";
            String emailMittente = "mail@mail.it"; // mail mittente
            
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet MailSender</title>");
            out.println("</head>");
            out.println("<body>");
            
            try{
            SendMail.sendMail(hostName,destinatari,cc,oggetto,messaggio,/*nomeFile,*/nomeUtente,emailMittente);
            }catch(Exception e) {out.println("<h1>"+e.toString()+"</h1>");}
            
            out.println("<h1>Mail inviata...</h1>");
            out.println("</body>");
            out.println("</html>");
         
            out.close();
        }
    Naturalmente vanno cambiati gli indirizzi mail e il server smtp...ma questo sicuramente lo sapevate già.

    Ringrazio anticipatamente per l'aiuto...spero di essere stato chiaro.

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    usare le classi javax.mail pareva brutto?
    http://www.mokabyte.it/2002/02/javamail.htm

  3. #3
    Utente di HTML.it L'avatar di MatCap83
    Registrato dal
    Jun 2005
    residenza
    Firenze
    Messaggi
    1,319
    In effetti, come dice floyd, non potevi usare la libreria javamail! Sicuramente piu' semplice e immediato che usare la classe Socket e i vari Stream?? Anche io sono ora a progettare (per un esame all' universita' !) una servlet per l' invio delle mail, o meglio una webmail, ma uso javamail....
    "Nessuno mi ha visto farlo, e non puoi provarlo in nessun modo!" (Bart Simpson)

    >>> www.ombresulweb.com <<<

  4. #4
    Utente di HTML.it L'avatar di MatCap83
    Registrato dal
    Jun 2005
    residenza
    Firenze
    Messaggi
    1,319
    Comunque se ti interessa mandare mail con javamail guarda

    http://forum.html.it/forum/showthrea...hreadid=849908

    ....
    "Nessuno mi ha visto farlo, e non puoi provarlo in nessun modo!" (Bart Simpson)

    >>> www.ombresulweb.com <<<

  5. #5
    Ok...supponiamo che usi javamail, anzi a breve proverò con quel codice postato al link che mi avete segnalato.

    Il punto che mi interessava di più è sapere perchè in tutti i domini...tiscali, tin, alice, ecc arriva la mail e su libero no?

    Ho provato il codice sia da casa, con connessione Alice che dal lavoro su pc in rete.

    Tengo a precisare che l'smtp usato non richiede autenticazione.

    Grazie a tutti.

  6. #6
    Potrebbe essere un problema di relay.

    Inoltre il dominio libero è da anni inserito nelle kill list dei mail server come fonte di spam.

    Dovresti verificare se esistono delle limitazioni sul server smtp che usi.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Io ho usato quella classe tranquillamente da un SMTP server che non richiede autenticazione, per inviarmi delle mail al mio indirizzo (su Libero!).


    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

  8. #8
    X LeleFT:
    Vuoi dire la classe che ho postato io? o quelle javaMail?

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.