Jump to content
php.lv forumi

mail() ar vairākiem pievienotajiem failiem


Recommended Posts

Posted

Kkur netā biju redzējis skriptu, kur ar mail var nosūtīt pievienotos failus (vairākus, bet skaits nav konstants), bet vairs nevaru atrast. Varbūt kādam ir kāds labs skripts?

Posted

http://lv.php.net/mail

 

<?php
function send_mail($to, $body, $subject, $fromaddress, $fromname, $attachments=false)
{
 $eol="\r\n";
 $mime_boundary=md5(time());

 # Common Headers
 $headers .= "From: ".$fromname."<".$fromaddress.">".$eol;
 $headers .= "Reply-To: ".$fromname."<".$fromaddress.">".$eol;
 $headers .= "Return-Path: ".$fromname."<".$fromaddress.">".$eol;	// these two to set reply address
 $headers .= "Message-ID: <".time()."-".$fromaddress.">".$eol;
 $headers .= "X-Mailer: PHP v".phpversion().$eol;		  // These two to help avoid spam-filters

 # Boundry for marking the split & Multitype Headers
 $headers .= 'MIME-Version: 1.0'.$eol.$eol;
 $headers .= "Content-Type: multipart/mixed; boundary=\"".$mime_boundary."\"".$eol.$eol;

 # Open the first part of the mail
 $msg = "--".$mime_boundary.$eol;

 $htmlalt_mime_boundary = $mime_boundary."_htmlalt"; //we must define a different MIME boundary for this section
 # Setup for text OR html -
 $msg .= "Content-Type: multipart/alternative; boundary=\"".$htmlalt_mime_boundary."\"".$eol.$eol;

 # Text Version
 $msg .= "--".$htmlalt_mime_boundary.$eol;
 $msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol;
 $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
 $msg .= strip_tags(str_replace("<br>", "\n", substr($body, (strpos($body, "<body>")+6)))).$eol.$eol;

 # HTML Version
 $msg .= "--".$htmlalt_mime_boundary.$eol;
 $msg .= "Content-Type: text/html; charset=iso-8859-1".$eol;
 $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
 $msg .= $body.$eol.$eol;

 //close the html/plain text alternate portion
 $msg .= "--".$htmlalt_mime_boundary."--".$eol.$eol;

 if ($attachments !== false)
 {
for($i=0; $i < count($attachments); $i++)
{
  if (is_file($attachments[$i]["file"]))
  {   
	# File for Attachment
	$file_name = substr($attachments[$i]["file"], (strrpos($attachments[$i]["file"], "/")+1));

	$handle=fopen($attachments[$i]["file"], 'rb');
	$f_contents=fread($handle, filesize($attachments[$i]["file"]));
	$f_contents=chunk_split(base64_encode($f_contents));	//Encode The Data For Transition using base64_encode();
	$f_type=filetype($attachments[$i]["file"]);
	fclose($handle);

	# Attachment
	$msg .= "--".$mime_boundary.$eol;
	$msg .= "Content-Type: ".$attachments[$i]["content_type"]."; name=\"".$file_name."\"".$eol;  // sometimes i have to send MS Word, use 'msword' instead of 'pdf'
	$msg .= "Content-Transfer-Encoding: base64".$eol;
	$msg .= "Content-Description: ".$file_name.$eol;
	$msg .= "Content-Disposition: attachment; filename=\"".$file_name."\"".$eol.$eol; // !! This line needs TWO end of lines !! IMPORTANT !!
	$msg .= $f_contents.$eol.$eol;
  }
}
 }

 # Finished
 $msg .= "--".$mime_boundary."--".$eol.$eol;  // finish with two eol's for better security. see Injection.

 # SEND THE EMAIL
 ini_set(sendmail_from,$fromaddress);  // the INI lines are to force the From Address to be used !
 $mail_sent = mail($to, $subject, $msg, $headers);

 ini_restore(sendmail_from);

 return $mail_sent;
}
?>

?

Posted

Jā, smieklīgi pēc velna

 

Vienkārši šeit ir pierasts nelocīt nikus. Un pieradums ir tik liels, ka arī parasti vārdus un uzvārdus vairs nelocu.

Posted (edited)
es arī failu sūtīšanai izmantotu gatavu klasi piem., http://www.phpguru.org/static/mime.mail.html

 

pielāgoju šito klasi, itkā viss nosūtās bez eroriem, bet e-pasts nepienāk. kur un kā varētu redzēt kas par vainu?

 

Kļuda atrisināta, nebija norādīts pareizs smtp

Edited by ray
×
×
  • Create New...