Can anyone give me a clue on how to change this script so it can be used with basic SMTP authentication? TNX, Etienne <? function another_mail($to,$subject,$headers,$message) { // Could get this from the php ini? $from="me@xxxxxxxx"; list($me,$mydomain) = split("@",$from); // Now look up the mail exchangers for the recipient list($user,$domain) = split("@",$to,2); if(getmxrr($domain,$mx,$weight) == 0) return FALSE; // Try them in order of lowest weight first array_multisort($mx,$weight); $success=0; foreach($mx as $host) { // Open an SMTP connection $connection = fsockopen ($host, 25, &$errno, &$errstr, 1); if (!$connection) continue; $res=fgets($connection,256); if(substr($res,0,3) != "220") break; // Introduce ourselves fputs($connection, "HELO $mydomain\n"); $res=fgets($connection,256); if(substr($res,0,3) != "250") break; // Envelope from fputs($connection, "MAIL FROM: $from\n"); $res=fgets($connection,256); if(substr($res,0,3) != "250") break; // Envelope to fputs($connection, "RCPT TO: $to\n"); $res=fgets($connection,256); if(substr($res,0,3) != "250") break; // The message fputs($connection, "DATA\n"); $res=fgets($connection,256); if(substr($res,0,3) != "354") break; // Send To:, From:, Subject:, other headers, blank line, message, and finish // with a period on its own line. fputs($connection, "To: $to\nFrom: $from\nSubject: $subject\n$headers\n\n$message\n.\n"); $res=fgets($connection,256); if(substr($res,0,3) != "250") break; // Say bye bye fputs($connection,"QUIT\n"); $res=fgets($connection,256); if(substr($res,0,3) != "221") break; // It worked! So break out of the loop which tries all the mail exchangers. $success=1; break; } // Debug for if we fall over - uncomment as desired // print $success?"Mail sent":"Failure: $res\n"; if($connection) { if($success==0) fputs($connection, "QUIT\n"); fclose ($connection); } return $success?TRUE:FALSE; } another_mail("recipient@xxxxxxxxxxx","My Subject","X-mailer: PHP Script\nX-another-header: Whatever","Test email body.\n\nNote if you actually put a period on a line\nby itself, the function will terminate prematurely.\n\nYou will get a partial email sent though.\n"); ?>