| px | top | add code | search | signup | login | help |
<?php
/*****************************
SMTP send mail function v1.0
string smtp ( string $to , string $subject , string $body , string $from , string $smtp [, string $user [, string $password [, array $headers ]]] )
By Hamish Milne
Sends mail via SMTP
With the $settings argument you can specify any extra settings you need by defining variables in string form.
$host The host to identify yourself as, can be domain or IP, defaults to localhost
$port The port to connect to, default 25
$headers Headers to use, defaults to show To and From
$auth The authentication method. Login and plain are supported. Default is login.
$talk Set to TRUE to return the server's replies, FALSE returns boolean. Defaults to FALSE.
example:
smtp('my_mates_email@mail.com','Hi there','Hi mate wanna hang out','my_email@mail.com,'smtp.mail.com','my_name','secret','$host='12.34.56.78;$port=26;$auth=plain;');
Requires PHP5 and fsockopen()
Tip: you can email directly to the recipient's inbox. Just change $smtp to the recipient's SMTP server.
Here is my secret:
Data sent to server
HELO [HOST]
AUTH LOGIN
[BASE64 USER]
[BASE64 PASS]
MAIL FROM: <[FROM]>
RCPT TO: <[TO]>
DATA
[HEADERS]
[BODY]
.
QUIT
*****************************/
function smtp($to,$subject,$body,$from='',$smtp,$user='',$pass='',$settings=''){
$host='localhost';
$port=25;
$headers='';
$auth='login';
$talk='';
eval($settings);
if(!$headers){
$headers="To: <$to>\r\nFrom: <$from>\r\nSubject: $subject\r\n";
}
if($sock=@fsockopen($smtp,$port)){
fputs($sock,"HELO ".$host."\r\n");
$ret.=fgets($sock,256);
if($user){
if($auth='login'){
fputs($sock,'auth login'."\r\n");
$ret.=fgets($sock,256);
fputs($sock,base64_encode($user)."\r\n");
list($uc,$us)=explode(' ',fgets($sock,256));
$ret.=$uc.' '.base64_decode($us)."\r\n";
fputs($sock,base64_encode($pass)."\r\n");
list($pc,$ps)=explode(' ',fgets($sock,256));
$ret.=$pc.' '.base64_decode($ps)."\r\n";
}else
if($auth='plain'){
fputs($sock,'auth plain'."\r\n");
$ret.=fgets($sock,256);
fputs($sock, base64_encode('^@'.$user.'^@'.$pass));
$ret.=fgets($sock,256);
}
}
fputs($sock,'MAIL FROM: <'.$from.'>'."\r\n");
$ret.=fgets($sock,256);
fputs($sock,'RCPT TO: <'.$to.'>'."\r\n");
$ret.=fgets($sock,256);
fputs($sock,'DATA'."\r\n");
$ret.=fgets($sock,256);
fputs($sock,$headers."\r\n".$body."\r\n.\r\n");
$r.=fgets($sock,256);
$ret.=$r;
fputs($sock, "QUIT\r\n");
$ret.=fgets($sock,256);
fclose($sock);
if($talk){
return $ret;
}else{
$ra=explode(' ',$r);
$raa=str_split($ra[0]);
if($raa[0]='2'){
return TRUE;
}else{
return FALSE;
}
}
}else{
if($talk){
return 'Could not connect to host';
}else{
return FALSE;
}
}
}
?>
Comments or questions?
PX is running PHP 5.2.11
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.