Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [PHP] Smtp-pop3 socket

  1. #1

    [PHP] Smtp-pop3 socket

    ciao!
    sto sviluppando questo script x inviare e-mail tramite smtp (poi in futuro riceverle tramite pop3)

    faccio partire questo script
    che dovrebbe creare il socket..connettersi all'indirizzo specificato..mandare i comandi x inviare la mail e riportarli su schermo.

    ma quando lo faccio partire

    codice:
    $indirizzo="smtp.fastwebnet.it";
    $porta="25";
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if ($socket < 0) {
        echo "socket_create() fallito: " . socket_strerror($socket)."
    ";
    } else {
        echo "OK.
    ";
    }
    $connessione = socket_connect($socket, $indirizzo, $porta);
    if ($connessione < 0) {
        echo "socket_connect() fallito. Motivo: " . socket_strerror($connessione)."
    ";
    } else {
        echo "OK.
    ";
    $risposta="";
    echo "Lettura della risposta:
    
    ";
    $risposta = socket_read($socket, 2048);
        echo $risposta;
    $risposta="";
    }
    $messaggio="HELO smtp.fastwebnet.it";
    
    $send=socket_write($socket, $messaggio);
    If(Isset($send)>'0'){
    echo "
    OK.
    ";
    }else{
    	echo "
    No";
    }
    $risposta1="";
    $risposta1=socket_read($socket, 2048);
    
    
    
    echo "Chiusura del socket...";
    socket_close($socket);
    echo "OK.
    ";

    quando deve solo leggere i dati restituiti dal socket e scriverli nella variabile "risposta" si impalla

    perchè?

  2. #2
    adesso ho provato ad usare il comando
    codice:
    socket_recv($socket,10, 2048)
    ora non sta lì + una vita a far nulla...
    ma da subito questo errore:
    Fatal error: Only variables can be passed by reference

  3. #3
    leggere la pagina del manuale relativa alla cosa? no è?

    http://it2.php.net/socket_recv

    cmq fossi in te userei

    http://it2.php.net/select

    per verificare quando ci sono dati in ingresso, quando puoi scrivere ed altro ancora

    comunque socket_read va benissimo per quello che devi fare tu ed è normale che resti in attesa dei dati che hai richiesto!
    Ovviamente non riceverai MAI 2 kb di roba di conseguenza il tutto resterà in attesa di ricevere i dati che richiedi

    devi piuttosto modificare la cosa in modo da fare una funzione che inviii i dati ed una che li riceve

    la funzione che invia è abbastanza banale dato che deve limitarsi a scrivere i comandi che richiedi, mentre quella che riceve deve leggere un byte per volta e quando arriva a \n allora si deve fermare, eliminare questo carattere ed un eventuale \r presente alla fine della stringa prima di \n e poi restituire i dati che richiesti

    questo è necessario per far funzionare il tutto correttamente ^^
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4
    l'ho letta...ma nn c'ho capito nulla
    ma con socked_read() se gli do un buffer + grande di quanto serve sta li finchè nn si riempie??
    socket_select( array lettura, array scrittura, array except, int tv_sec )

    quindi nell'array di scrittura legge i dati inviati.
    nell'array di lettura scrive i dati in arrivo.
    nell'array except ci mette cose fuori dan normale.
    tv_sec è il timeout.
    giusto??
    se si...come faccio a prendere i dati dall'array di lettura??
    (cioè è come si fa di solito o c'è una procedura diversa?)

    grazie

  5. #5
    nn capisco perchè
    codice:
    $risposta = socket_read($socket, 60);
    funzioni e mi restituisce il messaggio iniziale del server smtp
    poi quando gli mando il comando "HELO indirizzo_server.it"
    dovrebbe rispondermi rimandando l'indirizzo del server.
    ma direi che non avviene visto che sta li una vita a far nulla
    e poi non scrive nulla
    con il comando select come si fa per vedere se ci sono dati in arrivo e eventualmente scriverli?

  6. #6
    potrebbe essere che non invii i dati al socket perchè non c'è il carattere "a capo"???
    e quindi sta li ad aspettare dati che non ci sono

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.