Как прикрепить файл при отправке письма
надо ли прямо в контент письма запихнуть?
как? помогите пожалуйста, спасибо...
Для php существует ряд расширений для удобства работы с почтой. Есть они в PEAR, но так как PEAR не столь актуален, то рекомендую c-client.
Тема поднималась не раз. В сети достатоно информации.
Пример использования:
Код:
$mail = new PHPMailer();
$mail->From = 'адрес@отправителя';
$mail->FromName = 'Имя отправителя';
$mail->AddAddress('имя1@получателя', 'Имя1');
$mail->AddAddress('имя2@получателя', 'Имя2');
$mail->ContentType = "text/html";
$mail->IsHTML(true);
$mail->Subject = 'Тема';
$mail->Body='Тело письма';
$mail->AddAttachment('d:\myfile.zip','Файлик','base64','application/octet-stream');
$mail->Send();
$mail->From = 'адрес@отправителя';
$mail->FromName = 'Имя отправителя';
$mail->AddAddress('имя1@получателя', 'Имя1');
$mail->AddAddress('имя2@получателя', 'Имя2');
$mail->ContentType = "text/html";
$mail->IsHTML(true);
$mail->Subject = 'Тема';
$mail->Body='Тело письма';
$mail->AddAttachment('d:\myfile.zip','Файлик','base64','application/octet-stream');
$mail->Send();
Впрочем, все расписано в каментах внутри класса.
Код:
function sendMailAttach($mail_to, $thema, $html, $path, $from, $name) {
$fname = $path;
if ($path) {
$fp = fopen($path,"rb");
if (!$fp) {
print "Cannot open file";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
}
$name = $fname;
$EOL = "\r\n";
$boundary = "--".md5(uniqid(time()));
$headers = "MIME-Version: 1.0;$EOL";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
$headers .= "From: $from";
$multipart = "--$boundary$EOL";
$multipart .= "Content-Type: text/html; charset=windows-1253$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= $EOL;
$multipart .= chunk_split(base64_encode($html));
$multipart .= "$EOL--$boundary$EOL";
$multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";
$multipart .= $EOL;
$multipart .= chunk_split(base64_encode($file));
$multipart .= "$EOL--$boundary--$EOL";
if(!mail($mail_to, $thema, $multipart, $headers)) {
return False;
} else {
return True;
}
}
$fname = $path;
if ($path) {
$fp = fopen($path,"rb");
if (!$fp) {
print "Cannot open file";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
}
$name = $fname;
$EOL = "\r\n";
$boundary = "--".md5(uniqid(time()));
$headers = "MIME-Version: 1.0;$EOL";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
$headers .= "From: $from";
$multipart = "--$boundary$EOL";
$multipart .= "Content-Type: text/html; charset=windows-1253$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= $EOL;
$multipart .= chunk_split(base64_encode($html));
$multipart .= "$EOL--$boundary$EOL";
$multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";
$multipart .= $EOL;
$multipart .= chunk_split(base64_encode($file));
$multipart .= "$EOL--$boundary--$EOL";
if(!mail($mail_to, $thema, $multipart, $headers)) {
return False;
} else {
return True;
}
}
Да даже на этом сайте есть в статьях... Что за привычка как чуть чего, сразу спрашивать, а не искать?