note 39894 added to function.mail

From: Date: Sat, 14 Feb 2004 15:38:12 +0000
Subject: note 39894 added to function.mail
Groups: php.notes 
Request: Send a blank email to php-notes+get-65140@lists.php.net to get a copy of this message
If you want to send emails through socket instead sendmail, you could use this function ( maybe improved, but works well specially on Win98 / Apache / Php4.3.4 ). It sends nice HTML mails :)) and support both methods $auth=0, try no authentification, and $auth=1 with user / pass. I figured out an example to use : Enjoy :)) This simple function is a simplified version of mail class, found on net, phpprojekt <? php //mail($catre, $subject, $message, $headers); //old fashion mail, using sendmail, useful on linux sock_mail(1,$catre,$subject,$message,$headers,$from);//sock version, usable on Win32 //this is the sock mail function function sock_mail($auth,$to, $subj, $body, $head, $from){ $lb="\r\n"; //linebreak $body_lb="\r\n"; //body linebreak $loc_host = "localhost"; //localhost $smtp_acc = "your_mail_account"; //account $smtp_pass="your_mail_password"; //password $smtp_host="your_mail_server"; //server SMTP $hdr = explode($lb,$head); //header if($body) {$bdy = preg_replace("/^\./","..",explode($body_lb,$body));} // build the array for the SMTP dialog. Line content is array(command, success code, additonal error message) if($auth == 1){// SMTP authentication methode AUTH LOGIN, use extended HELO "EHLO" $smtp = array( // call the server and tell the name of your local host array("EHLO ".$loc_host.$lb,"220,250","HELO error: "), // request to auth array("AUTH LOGIN".$lb,"334","AUTH error:"), // username array(base64_encode($smtp_acc).$lb,"334","AUTHENTIFICATION error : "), // password array(base64_encode($smtp_pass).$lb,"235","AUTHENTIFICATION error : ")); } else {// no authentication, use standard HELO $smtp = array( // call the server and tell the name of your local host array("HELO ".$loc_host.$lb,"220,250","HELO error: ")); } // envelop $smtp[] = array("MAIL FROM: <".$from.">".$lb,"250","MAIL FROM error: "); $smtp[] = array("RCPT TO: <".$to.">".$lb,"250","RCPT TO error: "); // begin data $smtp[] = array("DATA".$lb,"354","DATA error: "); // header $smtp[] = array("Subject: ".$subj.$lb,"",""); $smtp[] = array("To:".$to.$lb,"",""); foreach($hdr as $h) {$smtp[] = array($h.$lb,"","");} // end header, begin the body $smtp[] = array($lb,"",""); if($bdy) {foreach($bdy as $b) {$smtp[] = array($b.$body_lb,"","");}} // end of message $smtp[] = array(".".$lb,"250","DATA(end)error: "); $smtp[] = array("QUIT".$lb,"221","QUIT error: "); // open socket $fp = @fsockopen($smtp_host, 25); if (!$fp) echo "<b>Error:</b> Cannot conect to ".$smtp_host."<br>"; $banner = @fgets($fp, 1024); // perform the SMTP dialog with all lines of the list foreach($smtp as $req){ $r = $req[0]; // send request @fputs($fp, $req[0]); // get available server messages and stop on errors if($req[1]){ while($result = @fgets($fp, 1024)){if(substr($result,3,1) == " ") { break; }}; if (!strstr($req[1],substr($result,0,3))) echo"$req[2].$result<br>"; } } $result = @fgets($fp, 1024); // close socket @fclose($fp); return 1; } ?> ---- Manual Page -- http://www.php.net/manual/en/function.mail.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+39894 Delete -- http://master.php.net/manage/user-notes.php?action=delete+39894&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+39894&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#65140) next »