Re: Mail problems...
| From: | Cesare D'Amico | Date: | Thu, 27 Jul 2000 13:32:00 +0000 |
| Subject: | Re: Mail problems... | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-8539@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;
}
?>