Revision: 33067
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 5, 2010 20:17 by tuffo19
Initial Code
/**
* Funzione di libreria testata e stra-testata per invio di mail.
*
* @param $to
* @param $from
* @param $from_name
* @param $subject
* @param $message
* @param $reply_to
* @param $attachments
* @param $cc
* @param $bcc
*/
function send_email_advanced($to = null, $from, $from_name, $subject, $message, $reply_to, $attachments = false, $cc = null, $bcc = null) {
$eol = "\n";
$headers = "From: " . $from_name . "<" . $from . ">".$eol;
$now=date("d-m-Y H:i:s");
$today=date("Y_m_d");
$from_name=str_replace(" ","_",$from_name);
$log_dir="logs/email_log/";
$log_file=$log_dir."email_log_{$today}_{$from_name}.html";
if ($bcc != ''){
$headers .= "BCC: $bcc".$eol;
}
$headers .= "CC: $cc".$eol;
$headers .= "Reply-To: " . $reply_to . "<" . $reply_to . ">".$eol;
$headers .= "Return-Path: " . $from_name . "<" . $from . ">".$eol;
$headers .= "Message-ID: <" . time () . "-" . $from . ">".$eol;
//$headers .= "X-Mailer: PHP v" . phpversion ();
$msg_txt = "";
$email_txt = $message;
$semi_rand = md5 ( time () );
//$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$mime_boundary = $semi_rand;
$headers .= "MIME-Version: 1.0".$eol."Content-Type: multipart/mixed;".$eol." boundary=\"$mime_boundary\"".$eol.$eol;
$email_txt .= $msg_txt;
$email_message .= "This is a multi-part message in MIME format.".$eol.$eol;
$email_message .= "--$mime_boundary".$eol;
$email_message .= "Content-Type:text/html; charset=\"iso-8859-1\"".$eol.$eol;
$email_message .= $email_txt.$eol.$eol;
if ($attachments != false) {
for($i = 0; $i < count ( $attachments ); $i ++) {
if (true || is_file ( $attachments [$i] ['src'] )) {
$fileatt = $attachments [$i] ['src'];
$fileatt_type = "application/octet-stream";
$start = strrpos ( $attachments [$i] ['src'], '/' ) == - 1 ? strrpos ( $attachments [$i] ['src'], '//' ) : strrpos ( $attachments [$i] ['src'], '/' ) + 1;
$fileatt_name = $attachments [$i] ['name'];
$fileatt_name = str_replace(" ","_",$fileatt_name);
$file = fopen ( $fileatt, 'rb' );
$data = fread ( $file, filesize ( $fileatt ) );
fclose ( $file );
$data = chunk_split ( base64_encode ( $data ) );
$filetype=returnMIMEType($fileatt_name);
// $email_message .= "Content-Type: ".mime_content_type($fileatt_name).";".$eol;
$email_message .= "--$mime_boundary".$eol;
$email_message .= "Content-Type: $filetype; name=\"$fileatt_name\"".$eol;
$email_message .= "Content-Transfer-Encoding: base64".$eol;
$email_message .= "Content-Disposition: attachment;".$eol;
$email_message .= "filename=\"$fileatt_name\"".$eol.$eol;
$email_message .= $data.$eol;
}
}
}
$email_message .= "--$mime_boundary--".$eol;
$log="<p align=center>Email sended at $now</p>
<li>to:$to</li>
<li>headers:$headers</li>
<li>oggetto:$subject</li>
<li>testo:$message</li>
<hr>";
if(!file_exists($log_dir)) {
mkdir($log_dir, 0777, true) ;
$flag="w";
} else {
$flag="a";
}
// $log.=file_get_contents($log_dir);
$fp=fopen ($log_file, $flag);
fwrite($fp,$log);
fclose($fp);
return mail ( $to, $subject, $email_message, $headers );
}
/**
* Funzione di libreria di appoggio alla funzione send_mail_advanced
*
* @param unknown_type $filename
*/
function returnMIMEType($filename){
preg_match("|\.([a-z0-9]{2,4})$|i", $filename, $fileSuffix);
switch(strtolower($fileSuffix[1])) {
case "js" :
return "application/x-javascript";
case "json" :
return "application/json";
case "jpg" :
case "jpeg" :
case "jpe" :
return "image/jpg";
case "png" :
case "gif" :
case "bmp" :
case "tiff" :
return "image/".strtolower($fileSuffix[1]);
case "css" :
return "text/css";
case "xml" :
return "application/xml";
case "doc" :
case "docx" :
return "application/msword";
case "xls" :
case "xlt" :
case "xlm" :
case "xld" :
case "xla" :
case "xlc" :
case "xlw" :
case "xll" :
return "application/vnd.ms-excel";
case "ppt" :
case "pps" :
return "application/vnd.ms-powerpoint";
case "rtf" :
return "application/rtf";
case "pdf" :
return "application/pdf";
case "html" :
case "htm" :
case "php" :
return "text/html";
case "txt" :
return "text/plain";
case "mpeg" :
case "mpg" :
case "mpe" :
return "video/mpeg";
case "mp3" :
return "audio/mpeg3";
case "wav" :
return "audio/wav";
case "aiff" :
case "aif" :
return "audio/aiff";
case "avi" :
return "video/msvideo";
case "wmv" :
return "video/x-ms-wmv";
case "mov" :
return "video/quicktime";
case "zip" :
return "application/zip";
case "tar" :
return "application/x-tar";
case "swf" :
return "application/x-shockwave-flash";
default :
if(function_exists("mime_content_type")){
$fileSuffix = mime_content_type($filename);
}
return "unknown/" . trim($fileSuffix[0], ".");
}
}
Initial URL
send_mail_advanced
Initial Description
Initial Title
Invio di mail avanzato
Initial Tags
email, php
Initial Language
PHP