|
|
|
| Помогите понять данный скрипт. Почему в приходящем письме нет текста?
переменная $body как будто пропадает
Только вложение.
<?php
function sendhtml($from="", $to="", $bcc="", $reply_to="", $charset="", $subject="", $message="", $picture_patch_logo=""){
$mail_default="test@domain.ru"; /// почтовый адрес по умолчанию служит для отладки, если остальные поля не заполнены
$body_pic=""; // не удалять - пустое значение так как прикрепляется в код
if(isset($from) && !empty($from)){$from_mail=$from;} else {$from_mail=$mail_default;} // поле FROM
if(isset($to) && !empty($to)){$to_mail=$to;} else {$to_mail=$mail_default;} // поле TO
if(isset($bcc) && !empty($bcc)){$bcc_mail=$bcc;} else {$bcc_mail=$mail_default;} // поле ИСС - СКРЫТАЯ КОПИЯ
if(isset($reply_to) && !empty($reply_to)){$reply_to_mail=$reply_to;} else {$reply_to_mail=$mail_default;} // поле Reply-To - куда слать ответ
if(isset($charset) && !empty($charset)){$charset_mail=$charset;
//------------------------------------------- короткие имена кодировок
$array_dopusk['w']="windows-1251";
$array_dopusk['k']="koi8-r";
//$array_dopusk['u']="utf-8"; // до правильной конвертации пока не дошел
if (array_key_exists("$charset", $array_dopusk)){$charset_mail=$array_dopusk["$charset"];
} else {$charset_mail="windows-1251";}
//------------------------------------------- короткие имена кодировок
} else {$charset_mail="windows-1251";} // поле FROM
if(!isset($message) or empty($message)){
$message="тестовое сообщение";
}
if(!isset($subject) or empty($subject)){
$subj="тестовое сообщение";
} else {
$subj=iconv("windows-1251", "$charset_mail", $subject);
}
$bound=md5(uniqid(time())); // идентификатор уникальный
//----------------------------------------------------------------------------------------------------------------------- вставка картинки
if(isset($picture_patch_logo) && !empty($picture_patch_logo) && $picture_patch_logo!="none" ){$file_name=$picture_patch_logo; // полный путь к файлу
if (file_exists($picture_patch_logo)) {
//-------------------------------------------
$body_pic.="Content-Type: image/jpeg; name=\"".basename($file_name)."\"\n";
$body_pic.="Content-Transfer-Encoding:base64\n";
$body_pic.="Content-ID: <logo>\n\n";
$f=fopen($file_name,"rb");
$body_pic.=chunk_split(base64_encode(fread($f,filesize($file_name))))."\r\n";
//$body.="\n\n--$bound_pic\n";
$body_pic.="--$bound--\n\n";
$html_pic="<img src='cid:logo' alt='a_title' width='362' height='53' border='0'>";
//-------------------------------------------
} else {echo "файл $picture_patch_logo не найден <br>"; exit;}
}
if(!isset($html_pic) or empty($html_pic)){$html_pic="Здесь должна быть картинка - шаблон страницы в функции";}
//----------------------------------------------------------------------------------------------------------------------- вставка картинки
//------------------------------------------------------------------- основной скрипт
$patch_file="http://url_site";
$headers ="From: $from\n";
$headers .= "Reply-To: $from\r\n";
$headers .= "Bcc: $bcc\r\n"; // можно закоментировать
$headers .= "X-Mailer: PHP FUNC SENDER ATTACH V1\r\n"; // желательно, для уменьшения коэффициента спама
$headers.="Mime-Version: 1.0\n";
$headers.="Content-Type: multipart/alternative; boundary=\"$bound\"\n";
$body="--$bound\n"; // начальный идентификатор вложений
$body.="Content-type: text/html; charset=\"$charset_mail\"\n";
$body.="Content-Transfer-Encoding: 8bit\n\n";
$body_message.="<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=$charset_mail'>
<title>$subject</title>
</head>
<style type='text/css'>
<!--
A:visited {text-decoration: none; color: #5678A2; } /* цвет ссылки в дефолте*/
A:hover {text-decoration: none; color: Navy; } /* при наведении мыши*/
A:active {text-decoration: none; color: black;} /*после нажатия*/
A:link {text-decoration: none; color: #5678A2;} /**/
-->
</style>
<body style='padding:5px'>
Картинка вставляется через единую переменную, которая прикрепляется в шаблон, если указан верный путь к файлу. $html_pic <br>
<strong>URL: <a href='$patch_file' title='Посмотреть новость в обычном формате' >$patch_file</a></strong>".date("d.m.Y H-i-s")."<br>
текст сообщения $message <br>
</body>
</html>";
$body.=iconv("windows-1251", "$charset_mail", $body_message); // по умолчанию перекодировка в любую кодировку
$body.="\n\n--$bound\n"; // заершение общей части
$body.=$body_pic; // прикрепление части с графикой
$result = mail("$to_mail", $subj, $body, $headers); // отправка
if($result){return "$to_mail -> <font color='#009933'>ok</font> <br>"; } else {echo "Возникла ошибка отправки сообщения"; return;}
//------------------------------------------------------------------- основной скрипт
} // конец функции
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ рабочий скрипт
// допустимые кодировки k =koi8-r, w = win1251
echo sendhtml(/*from:*/"mail_from@domain.ru", /*to:*/"mail_to@domain.ru", /*скрытая копия bcc:*/"mail_bcc@domain.ru", /*на какой адрес отвечать reaply-to*/"mail_reaply-to@domain.ru", /*Кодировка:*/"w", /*Тема:*/"Проверка отправки из функции в кодировке win-1251", /*Текст сообщения,встраиваемый в шаблон:*/"Здесь можно спокойно вставлять сгенерированный html", /*Полный путь(или относительно каталога скрипта запуска функции) к рисунку:*/"/var/bbb/logo.jpg");
?>
|
| |
|
|
|
|
|
|
|
для: gOFREe
(16.10.2013 в 10:52)
| | а что error_reporting() Вам говорит? | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.10.2013 в 11:32)
| | Ругается на переменную $body_message
Notice: Undefined variable: body_message
Ошибку понял. $body_message = ""
Только это ничего не поменяло | |
|
|
|
|
|
|
|
для: gOFREe
(16.10.2013 в 12:20)
| | та даже если не объявлять данную переменную - работает.
на почту приходит письмо с картинкой и текстом
как Вы используете данную функцию? | |
|
|
|
|
|
|
|
для: gOFREe
(16.10.2013 в 10:52)
| | Принцип работы скрипта крайне прост: отправлять почту стандартным средством..
Проблема появляется лишь только от неправильных настроек сервера. Также не стоит забывать, что некоторые функции в php 5.4 deprecated.
Но настоятельно рекомендую воспользоваться любым классом отправки письма через SMTP, примеров множество на http://phpclasses.org
Теория по данному вопросу очень хорошо расжевана http://www.php.su/articles/?cat=email&page=007
ну а если совсем лень.... посмотри http://webi.ru/webi_files/php_libmail.html | |
|
|
|
|
|
|
|
для: Jura
(16.10.2013 в 14:21)
| | Спасибо, с этим разобрался!
Возник другой вопрос, указывая несколько адресов для рассылки одного письма, можно ли как то скрыть остальных получателей?
т.е. получая письмо, человек видит в получателях только свой email | |
|
|
|
|
|
|
|
для: gOFREe
(18.10.2013 в 18:15)
| | > можно ли как то скрыть остальных получателей?
Нельзя | |
|
|
|