Salve ragazzi e vi ringrazio per l'aiuto che potrete darmi per risolvere questo problema
ho un programma che invia le email, funziona tutto, l'email viene inviata ma dopo un pò controllo la posta del mittente e trovo questo messaggio
These recipients of your message have been processed by the mail server:
destinatario@lycos.it; Failed; 5.7.0 (other or undefined security status)
--------------------------------------------------------------------------------
Return-Path: <mittente@libero.it>
Received: from mail.libero.it (151.24.137.110) by smtp2.libero.it (7.0.020-DD01)
id 3F6F0DA900A3ADDB for destinatario@lycos.it; Wed, 22 Oct 2003 14:07:17 +0200
From: <mittente@libero.it>
To: <destinatario@lycos.it>
Subject: test
prova email
logicamente al posto della scritta mittente avevo posto il mio indirizzo di posta su libero e al destinatario il mio indirizzo di posta di lycos.
ora io credo che sia un problema del server mail.libero.it perchè forse vorrebbe la mia autenticazione è possibile? mi sapete consigliare come risolvere il problema?
vi posto il codice completo così che chiunque possa utilizzarlo ed eventualmente testare il problema
CODE]package mail;
import java.io.*;
import java.net.*;
import java.util.*;
class SendEmail {
private static final int SMTP_PORT = 25;
private static final char SMTP_ERROR_CODE1 = '4';
private static final char SMTP_ERROR_CODE2 = '5';
Vector sessionTrace=new Vector();
SendEmail(String host,String domain,String sender,String recipients,String subject,String maildata) throws IOException {
// la funzione chiede alcuni parametri:
// l’indirizzo ip dell’host ed il suo nome di dominio,
// che generalmente coincidono.
// il mittente (sender), i destinatari, l’oggetto della mail,
// il corpo della mail.
// sessionTrace è un vettore sul quale le funzioni ausiliarie
// memorizzeranno tutte le transizioni.
// il Socket che collega sender a receiver
Socket mailSocket;
// gli stream di input e output verso il receiver
BufferedReader socketIn;
DataOutputStream socketOut;
String address;
StringTokenizer tokenizer;
// apre la connessione verso il server SMTP e collega gli stream
mailSocket = new Socket(host, SMTP_PORT);
socketIn = new BufferedReader(new InputStreamReader(mailSocket.getInputStream()) );
socketOut = new DataOutputStream(mailSocket.getOutputStream());
// riceve la prima risposta dal server
readReply(socketIn, sessionTrace);
// il saluto al server, e relativa risposta
sendCommand(socketOut, "HELO " + domain, sessionTrace);
readReply(socketIn, sessionTrace);
// invia l’indirizzo del mittente
sendCommand(socketOut, "MAIL FROM: " + sender, sessionTrace);
readReply(socketIn, sessionTrace);
// invia l’elenco dei destinatari, che
//nell’argomento erano passati
// sotto forma di un’unica stringa, separati dalla virgola
// per ogniuno dei destinatari invia il comando RCPT TO
// e legge la risposta del server
tokenizer = new StringTokenizer(recipients, ",");
while (tokenizer.hasMoreElements()) {
sendCommand(socketOut, "RCPT TO: " + tokenizer.nextToken(), sessionTrace);
readReply(socketIn, sessionTrace);
}
// invia il comando “DATA”. Da ora il receiver
// interpreta gli input
// come corpo del testo e si attende la sequenza <CRLF>.<CRLF>
// come conclusione del corpo
sendCommand(socketOut, "DATA", sessionTrace);
readReply(socketIn, sessionTrace);
// crea la stringa body e vi scrive i “memo header items”
String body = "";
body += "From: " + sender + "\n";
body += "To: " + recipients + "\n";
body += "Subject: " + subject + "\n";
// aggiunge il corpo vero e proprio della mail
body += maildata;
// invia il corpo della mail e la sequenza di chiusura
sendCommand(socketOut, body, sessionTrace);
sendCommand(socketOut, ".", sessionTrace);
readReply(socketIn, sessionTrace);
// conclude la sessione
sendCommand(socketOut, "QUIT", sessionTrace);
readReply(socketIn, sessionTrace);
}
private void sendCommand(DataOutputStream out, String command, Vector sessionTrace)
throws IOException {
out.writeBytes(command + "\r\n");
sessionTrace.addElement(command);
System.out.println(command);
}
private void readReply(BufferedReader reader, Vector sessionTrace)
throws IOException {
String reply;
char statusCode;
reply = reader.readLine();
statusCode = reply.charAt(0);
sessionTrace.addElement(reply);
System.out.println(reply);
if ( (statusCode == SMTP_ERROR_CODE1) | (statusCode == SMTP_ERROR_CODE2)) {
throw (new IOException("SMTP: " + reply));
}
}
public static void main(String[] args) throws Exception {
SendEmail s=new SendEmail("mail.libero.it","mail.libero.it","<mitt ente@libero.it>","<destinatario@lycos.it>","test", "prova email");
}
}[/CODE]