Mail problems...

From: Date: Thu, 27 Jul 2000 11:13:40 +0000
Subject: Mail problems...
Groups: php.general 
Request: Send a blank email to php-general+get-8519@lists.php.net to get a copy of this message
<?php /*************************************************** * Webmail * *************************************************** * * * Una semplice funzione per spedire e-mail * * VELOCEMENTE da una pagina web. * * * *************************************************** * * Parametri: * $user : nome utente sul server di posta * $pass : password dell'utente sul server * $pophost : nome o IP del server POP3 * $smtphost: nome o IP del server SMTP * $domain : nome del dominio da passare come parametro di HELO * $from : indirizzo e-mail del mittente * $to : indirizzo e-mail del destinatario * $subject : oggetto del messaggio * $message : corpo del messaggio * $reply_to: campo Reply-to degli header * * Codici di errore: * 0: messaggio spedito con successo * 1: impossibile aprire il socket verso il server SMTP * 2: impossibile aprire il socket verso il server POP3 * 3: direttiva USER non accettata dal server POP3 * 4: direttiva PASS non accettata dal server POP3 * 5: risposta negativa alla connessione da parte del server SMTP * 6: direttiva EHLO non accettata dal server SMTP * 7: direttiva MAIL non accettata dal server SMTP * 8: direttiva RCPT non accettata dal server SMTP * 9: direttiva DATA non accettata dal server SMTP * 10: corpo del messaggio non accettato dal server SMTP * 11: direttiva QUIT non accettata dal server SMTP */ function webmail( $user, $pass, $pophost, $smtphost, $domain, $from, $to, $subject, $message, $reply_to, $auth) { /* Prima di tutto effettuo l'autenticazione * tramite protocollo pop3 */ if( $auth == 1 ) { $socket110 = fsockopen($pophost, 110, &$errno, &$errstr, 30); if( $socket110 ){ set_socket_blocking( $socket110, 1 ); set_file_buffer( $socket110, 512 ); $reply = fgets($socket110, 512); //echo "Risposta iniziale del pop3: ".substr( $reply, 0, 512)."<br>"; $p = fputs( $socket110, "USER $user\r\n"); $reply = fgets($socket110, 512); if( strtoupper(substr($reply, 0, 3)) != "+OK" ) { $ok = fclose( $socket110 ); return 3; } $p = fputs( $socket110, "PASS $pass\r\n"); $reply = fgets($socket110, 512); if( strtoupper(substr($reply, 0, 3)) != "+OK" ) { $ok = fclose( $socket110 ); return 4; } $p = fputs( $socket110, "QUIT\r\n" ); } else { // Socket non aperto echo "<font color=\"white\"><h2>Azz! $errstr ($errno)</h2></font><br>"; return 2; } $ok = fclose( $socket110 ); } /* Una volta autenticato, posso spedire la mail a nome dell'utente * tramite i parametri $user e $pass */ $socket25 = fsockopen($smtphost, 25, &$errno, &$errstr, 30); //echo "<div align=left>Socket: $socket25<br>"; if( $socket25 ) { set_socket_blocking( $socket25, 1 ); set_file_buffer( $socket25, 512 ); $reply = fgets($socket25, 512); if( substr($reply, 0, 3) != "220" ) { echo "Risposta iniziale dello smtp: $reply"; $ok = fclose( $socket25 ); return 5; } $p = fputs( $socket25, "HELO $domain\r\n" ); //echo "Risposta a HELO: $reply<br>"; $reply = fgets($socket25, 512); if( substr($reply, 0, 3) != "250" ) { $ok = fclose( $socket25 ); return 6; } $p = fputs( $socket25, "MAIL FROM:<$from>\r\n" ); //echo "Risposta a MAIL: $reply<br>"; $reply = fgets($socket25, 512); if( substr($reply, 0, 3) != "250" ) { $ok = fclose( $socket25 ); return 7; } $p = fputs( $socket25, "RCPT TO:<$to>\r\n" ); $reply = fgets($socket25, 512); if( substr($reply, 0, 3) != "250" ) { $ok = fclose( $socket25 ); echo "Risposta a RCPT: $reply<br>"; return 8; } $p = fputs( $socket25, "DATA\r\n" ); //echo "Risposta a DATA: $reply<br>"; $reply = fgets($socket25, 512); if( substr($reply, 0, 3) != "354" ) { $ok = fclose( $socket25 ); return 9; } $p = fputs( $socket25, "From: $from\r\n" ); $p = fputs( $socket25, "To: $to\r\n" ); $p = fputs( $socket25, "Subject: $subject\r\n" ); $p = fputs( $socket25, "Reply-to: $reply_to\r\n"); $p = fputs( $socket25, "Return-Path: $from\r\n"); $p = fputs( $socket25, "Date: ".datae(adesso())."\r\n" ); $p = fputs( $socket25, "Content-Type: text/plain\r\n" ); $p = fputs( $socket25, "X-mailer: Web Mail by Cesare D'Amico <cesare@mkn.it>\r\n"); $p = fputs( $socket25, "X-ISP: Internet Solution Provider MK Network\r\n" ); $p = fputs( $socket25, "\r\n" ); $p = fputs( $socket25, $message ); $p = fputs( $socket25, "\r\n.\r\n" ); //echo "Risposta alla fine del messaggio: $reply<br>"; if( (substr($reply = fgets($socket25, 100 ), 0, 3)) != "250" ) { $ok = fclose( $socket25 ); return 10; } $p = fputs( $socket25, "QUIT\r\n" ); $reply = fgets($socket25, 512); if( substr($reply, 0, 3) != "221" ) { //echo "Risposta a QUIT: $reply"; $ok = fclose( $socket25 ); return 11; } //echo "</div>"; } else { // Socket non aperto echo "Azz! $errstr ($errno)<br>"; return 1; } // Tutto a posto! $ok = fclose( $socket25 ); return 0; } ?>

« previous php.general (#8519) next »