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.