mail * 2 ???
6 отговора
262 прегледа
mail * 2 ???
Здравейте,
трябваше ми скрипт, който да праща email с атачнати файлове.
Тази функция я взех от php.net
Работи, разбира се, обаче изпраща mail-a 2 пъти.
Помогнете моля!
function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html,$AttmFiles){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Html:preg_replace("/\n/","{br}",$Text)
or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
// $From or die("sender address missing");
//$To or die("recipient address missing");
$headers ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
$headers.="Reply-To: ".$FromName." <".$From.">\n";
$headers.="X-Priority: 1\n";
$headers.="X-MSMail-Priority: High\n";
$headers.="X-Mailer: My PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";
//Messages start with text/html alternatives in OB
$Msg ="This is a multi-part message in MIME format.\n";
$Msg.="\n--".$OB."\n";
$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";
//plaintext section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/plain;\n\tcharset=\"windows-1251\"\n";
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";
// html section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/html;\n\tcharset=\"windows-1251\"\n";
$Msg.="Content-Transfer-Encoding: base64\n\n";
// html goes here
$Msg.=chunk_split(base64_encode($Html))."\n\n";
// end of IB
$Msg.="\n--".$IB."--\n";
// attachments
if($AttmFiles){
foreach($AttmFiles as $AttmFile){
$patharray = explode ("/", $AttmFile);
$FileName=$patharray[count($patharray)-1];
$Msg.= "\n--".$OB."\n";
$Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n";
$Msg.="Content-Transfer-Encoding: base64\n";
$Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n";
//file goes here
$fd=fopen ($AttmFile, "rb");
$FileContent=fread($fd,filesize($AttmFile));
fclose ($fd);
$FileContent=chunk_split(base64_encode($FileContent));
$Msg.=$FileContent;
$Msg.="\n\n";
}
}
//message ends
$Msg.="\n--".$OB."--\n";
mail($To,$Subject,$Msg,$headers);
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
} // end function
трябваше ми скрипт, който да праща email с атачнати файлове.
Тази функция я взех от php.net
Работи, разбира се, обаче изпраща mail-a 2 пъти.
Помогнете моля!
function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html,$AttmFiles){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Html:preg_replace("/\n/","{br}",$Text)
or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
// $From or die("sender address missing");
//$To or die("recipient address missing");
$headers ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
$headers.="Reply-To: ".$FromName." <".$From.">\n";
$headers.="X-Priority: 1\n";
$headers.="X-MSMail-Priority: High\n";
$headers.="X-Mailer: My PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";
//Messages start with text/html alternatives in OB
$Msg ="This is a multi-part message in MIME format.\n";
$Msg.="\n--".$OB."\n";
$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";
//plaintext section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/plain;\n\tcharset=\"windows-1251\"\n";
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";
// html section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/html;\n\tcharset=\"windows-1251\"\n";
$Msg.="Content-Transfer-Encoding: base64\n\n";
// html goes here
$Msg.=chunk_split(base64_encode($Html))."\n\n";
// end of IB
$Msg.="\n--".$IB."--\n";
// attachments
if($AttmFiles){
foreach($AttmFiles as $AttmFile){
$patharray = explode ("/", $AttmFile);
$FileName=$patharray[count($patharray)-1];
$Msg.= "\n--".$OB."\n";
$Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n";
$Msg.="Content-Transfer-Encoding: base64\n";
$Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n";
//file goes here
$fd=fopen ($AttmFile, "rb");
$FileContent=fread($fd,filesize($AttmFile));
fclose ($fd);
$FileContent=chunk_split(base64_encode($FileContent));
$Msg.=$FileContent;
$Msg.="\n\n";
}
}
//message ends
$Msg.="\n--".$OB."--\n";
mail($To,$Subject,$Msg,$headers);
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
} // end function
Re: mail * 2 ???
Probvai tova!
<?php
function mail_attach($to, $from, $subject, $message, $file) {
// $to Recipient
// $from Sender (like "email@domain.com" or "Name <email@domain.com>")
// $subject Subject
// $message Content
// $file File (on server) to attach
$mime_boundary = "<<<:" . md5(uniqid(mt_rand(), 1));
$data = chunk_split(base64_encode(implode("", file($file))));
$header = "From: ".$from."\r\n";
$header.= "To: ".$to."\r\n";
$header.= "MIME-Version: 1.0\r\n";
$header.= "Content-Type: multipart/mixed;\r\n";
$header.= " boundary=\"".$mime_boundary."\"\r\n";
$content = "This is a multi-part message in MIME format.\r\n\r\n";
$content.= "--".$mime_boundary."\r\n";
$content.= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$content.= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$content.= $message."\r\n";
$content.= "--".$mime_boundary."\r\n";
$content.= "Content-Disposition: attachment;\r\n";
$content.= "Content-Type: Application/Octet-Stream; name=\"".$file."\"\r\n";
$content.= "Content-Transfer-Encoding: base64\r\n\r\n";
$content.= $data."\r\n";
$content.= "--" . $mime_boundary . "\r\n";
if(mail($to, $subject, $content, $header)) {
return TRUE;
}
return FALSE;
}
mail_attach($to, "Sender <sender@address.com>", "Subject", $text, "./mydir/file.jpg");
?>
<?php
function mail_attach($to, $from, $subject, $message, $file) {
// $to Recipient
// $from Sender (like "email@domain.com" or "Name <email@domain.com>")
// $subject Subject
// $message Content
// $file File (on server) to attach
$mime_boundary = "<<<:" . md5(uniqid(mt_rand(), 1));
$data = chunk_split(base64_encode(implode("", file($file))));
$header = "From: ".$from."\r\n";
$header.= "To: ".$to."\r\n";
$header.= "MIME-Version: 1.0\r\n";
$header.= "Content-Type: multipart/mixed;\r\n";
$header.= " boundary=\"".$mime_boundary."\"\r\n";
$content = "This is a multi-part message in MIME format.\r\n\r\n";
$content.= "--".$mime_boundary."\r\n";
$content.= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$content.= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$content.= $message."\r\n";
$content.= "--".$mime_boundary."\r\n";
$content.= "Content-Disposition: attachment;\r\n";
$content.= "Content-Type: Application/Octet-Stream; name=\"".$file."\"\r\n";
$content.= "Content-Transfer-Encoding: base64\r\n\r\n";
$content.= $data."\r\n";
$content.= "--" . $mime_boundary . "\r\n";
if(mail($to, $subject, $content, $header)) {
return TRUE;
}
return FALSE;
}
mail_attach($to, "Sender <sender@address.com>", "Subject", $text, "./mydir/file.jpg");
?>
Re: mail * 2 ???
Пробвах, но не стана. Благодаря за предложението.
Но всащност по-големия проблем се оказа не в дублирането на mail-a, а в това, че binary файловете пристигат "повредени"
Имате ли идея как се пращат attach-нати изпълними файлове?
Но всащност по-големия проблем се оказа не в дублирането на mail-a, а в това, че binary файловете пристигат "повредени"
Имате ли идея как се пращат attach-нати изпълними файлове?
ne raboti s izpalnimi
Благодаря voyager.
функцията, която си дал в FAQ на клуба работи перфектно с .jpg, но не и с изпълними файлове, дори и след като смених
$attachement .= "Content-Type: image/jpeg; name=\"$attfile\"\n";
с
$attachement .= "Content-Type: application/octet-stream;\n\tname=\"".$attfile."\"\n";
и $fd = fopen( $fichier, "r" ); със $fd = fopen( $fichier, "rb" );
Помогнете моля! Къде бъркам?
функцията, която си дал в FAQ на клуба работи перфектно с .jpg, но не и с изпълними файлове, дори и след като смених
$attachement .= "Content-Type: image/jpeg; name=\"$attfile\"\n";
с
$attachement .= "Content-Type: application/octet-stream;\n\tname=\"".$attfile."\"\n";
и $fd = fopen( $fichier, "r" ); със $fd = fopen( $fichier, "rb" );
Помогнете моля! Къде бъркам?
Re: mail * 2 ???
около 6 хил. пъти съм писал за имейл пращане - phpguru.org->HTML Mime Mail
а като имаш изпълним файл, провери дали не ти го блокира самия мейл сървър като вероятен източник на "простотийки"
а като имаш изпълним файл, провери дали не ти го блокира самия мейл сървър като вероятен източник на "простотийки"
Re: mail * 2 ???
Da ne bi da e ot mail Servera za6toto ne vijdam gre6ki v tvoq i v moq script!????