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...
Questa è la classe java...trovata tra l'altro su questo forum (grazie!)...e sotto la semplicissima servlet.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(); } } }
Naturalmente vanno cambiati gli indirizzi mail e il server smtp...ma questo sicuramente lo sapevate già.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(); }
Ringrazio anticipatamente per l'aiuto...spero di essere stato chiaro.

Rispondi quotando