Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Java e smtp

  1. #1

    Java e smtp

    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]
    TonyTalk
    Gioca a The Empire Multiplayer online game...ispirato a Risiko ma con scenari ed opzioni rivoluzionarie
    http://www.multiplayergames.it
    http://utenti.lycos.it/the_empire

  2. #2
    Ma perchè non usi molto più semplicemente Javamail, anzichè i socket?
    zonatre.it - il mio sito personale
    Belluno Country Side primo e unico gruppo country in provincia
    confronta i costi delle tue chiamate fatte con diversi operatori

  3. #3
    Per una ragione in particolare non posso usare il package javax.mail
    TonyTalk
    Gioca a The Empire Multiplayer online game...ispirato a Risiko ma con scenari ed opzioni rivoluzionarie
    http://www.multiplayergames.it
    http://utenti.lycos.it/the_empire

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 © 2024 vBulletin Solutions, Inc. All rights reserved.