| px | top | add code | search | signup | login | help |
<?PHP
// --------------------------------------------------------------------------------------------------------------
// SendEmail:
// Function: Send eMail and add no (0), one (1) or more (n) attachments to the mail.
// I took the Program from Bill Adams as a sample. But I do not like these OO-Programs, therefor I
// did it in the old fashioned way :-)
//
//
// Call Format: SendMail(Receiver, Sender, Subject, Message [, File, Filename]) ;
// Parms: Receiver : The person you wish to send the message
// Sender : Your own email-address
// Subject : The Email\'s subject
// Message : The story you want to tell the Receiver
// File : The Filename (including path, etc.) for the attachment you want to add (optional)
// Filename : (Only) Name of the file. Will be shown to receiver (optinal)
//
//
// There is another small function which checks the correctness of an email-address.
// Call Format: emailCheck(address) ;
// Return: true -> email-address is o.k.
// false -> invalid email-address
//
// Author: Rainer Leicht, conneXion Network GmbH, Wilhelm-Haas str. 6, D-70771 Leinfelden, Germany
// rleicht@connexion.de
// Date: Dec. 2000
// Changes : None up to now !
// --------------------------------------------------------------------------------------------------------------
define("XNL\",\"\\r\\n\") ; // CONSTANT Newline CR
if (isset($MailTest))
{
$Testing = \"YES\" ;
$TestMailFile = \"Mailing.txt\" ;
}
else
{
$Testing = \"NO\" ;
$TestMailFile = \"none\" ;
}
$mime_boundary = \"--==================_846811060==_\" ;
$mimetype = \"application/octet-stream\" ;
function SendMail($ToReceiver, $FromSender, $Subject, $MsgText, $IFile=\"none\", $IFileName=\"none\")
{
global $mimetype, $mime_boundary, $Testing, $TestMailFile ;
if (!is_array($IFile)) // check for array (multiple attachments)
{
$File[0] = $IFile ;
$FileName[0] = $IFileName ;
}
else
{
for ($i=0;$i<count($IFile);$i++)
{
$File[$i] = $IFile[$i] ;
$FileName[$i] = $IFileName[$i] ;
}
}
$attCount = count($File) ;
$attExists = FALSE ; // check if there is really an attachment
for ($i=0;$i<$attCount;$i++)
{
if ($File[$i] != \"none\")
{
$attExists = TRUE ;
}
}
$txtheaders = \"From: \".$FromSender.\"\\n\" ; // build header for text
$txtheaders .= \"To: \".$ToReceiver.\"\\n\" ;
$txtheaders .= \"Reply-To: \".$FromSender.\"\\n\" ;
$txtheaders .= \"X-Mailer: PHP\\n\" ;
$txtheaders .= \"X-Sender: \".$FromSender.\"\\n\" ;
if ($attExists) // is there an attachment
{
// build header for attachment
$attheaders = \"MIME-version: 1.0\\n\" ;
$attheaders .= \'Content-type: multipart/mixed; boundary=\"\'.$mime_boundary.\'\"\'.\"\\n\" ;
$attheaders .= \"Content-transfer-encoding: 7BIT\\n\" ;
$attheaders .= \"X-attachments: \" ;
$firstAtt = TRUE ;
for ($i=0;$i<$attCount;$i++)
{
if ($File[$i] != \"none\")
{
if ($firstAtt)
{
$firstAtt = FALSE ;
}
else
{
$attheaders .= \",\" ;
}
$attheaders .= $FileName[$i] ;
}
}
$attheaders .= \";\\n\\n\" ;
// build attachment itself
$attach = \"\" ;
for ($i=0;$i<$attCount;$i++)
{
if ($File[$i] != \"none\")
{
$attach .= \"--\".$mime_boundary.\"\\n\" ;
$attach .= \"Content-type:\".$mimetype.\'; name=\"\'.$FileName[$i].\'\";\'.\"\\n\" ;
$attach .= \"Content-Transfer-Encoding: base64\\n\" ;
$attach .= \'Content-disposition: attachment; filename=\"\'.$FileName[$i].\'\"\'.\"\\n\\n\" ;
$attach .= TextEncode($File[$i]).\"\\n\" ;
}
}
// build message itself
$message = \"--\".$mime_boundary.\"\\n\" ;
$message .= \'Content-Type. text/plain; charset=\"us-ascii\"\'.\"\\n\\n\" ;
$message .= $MsgText.\"\\n\" ;
}
else // no attachment
{
$attheaders = \"\" ;
$attach = \"\" ;
$message = $MsgText.\"\\n\" ; // send text only
}
if ($Testing == \"NO\")
{
// send email
mail($ToReceiver, $Subject, $message.$attach, $txtheaders.$attheaders) ;
}
else
{
$mp = fopen($TestMailFile, \"w\") ;
fputs($mp, \"TO:\".$ToReceiver.XNL) ;
fputs($mp, \"FROM:\".$FromSender.XNL) ;
fputs($mp, \"SUBJECT:\".$Subject.XNL) ;
fputs($mp, $MsgText.XNL) ;
fclose($mp) ;
}
}
//
// build attachment as text conforming RFC2045 (76 char per line, end with \\r\\n)
//
function TextEncode ($FileName)
{
if (is_readable($FileName))
{
$fp = fopen($FileName, \"r\") ;
$cont = fread($fp, filesize($FileName)) ;
$contents = base64_encode($cont) ;
$len = strlen($contents) ;
$str = \"\" ;
while($len > 0)
{
if ($len >= 76)
{
$str .= substr($contents,0,76).XNL ;
$contents = substr($contents, 76) ;
$len = $len - 76 ;
}
else
{
$str .= $contents.XNL ;
$contents = \"\" ;
$len = 0 ;
}
}
fclose($fp) ;
}
else
{
$str = \"File \".$FileName.\" not found\" ;
}
return $str ;
}
//
// check for correct email-address
//
function emailCheck ($eMail)
{
if(!ereg(\"^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$\",$eMail))
{
return(false) ;
}
else
return(true) ;
}
?>
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.