|
|
18.06.2017, 13:26
|
|
Gvenv_nk
Наталья Комарова
Зарегистрирован: 2011-11-07
Сообщений: 43
|
Файл к письму прикрепляется и доступен из админки, но в теле письма ссылка на вложение неактивна, отображается в виде:
Приложение: /netcat_files/54/61/file_name.
Перечитала все, что об этом написано на форуме и в мануале, но ответов не нахожу. Буду рада полезным ссылкам. К сожалению, я не программист, поэтому каждый раз туплю над подобными вопросами.
В действиях после добавления написано:Код:<?
// значения визуальных настроек
$res = $db->get_var("SELECT CustomSettings FROM Sub_Class WHERE Sub_Class_ID=$cc");
( $res ? eval("\$cc_settings = $res") : $cc_settings = NULL );
// значения визуальных настроек по умолчанию
$res = $db->get_var("SELECT CustomSettingsTemplate FROM Class WHERE Class_ID=$classID");
eval("\$default_cc_settings = $res");
echo "<div class='form-text'>".str_replace("%NAME", htmlspecialchars($f_Name), ( $cc_settings[TextAfterSend] ? $cc_settings[TextAfterSend] : $default_cc_settings[TextAfterSend][default_value] ) )."</div>";
$mailer = new CMIMEMail();
$f_Mail = "От кого: $f_Name
Почтовый адрес: $f_Address
E-mail: $f_Email
Телефон: $f_Phone
Вопрос: $f_Text
Приложение: $f_File_url";
$mailer->mailbody(strip_tags($f_Mail));
$mailer->send(($cc_settings[EmailTo] ? $cc_settings[EmailTo] : $system_env[SpamFromEmail]), $f_Email, $f_Email, 'ПИСЬМО С САЙТА adm-moskovsky.ru', $f_Name, $f_Phone, $f_Address, $f_Problem, $f_Text, $f_File);
$mailer->attachFile("$DOCUMENT_ROOT.$f_File_url", "$f_File[name]", "application/octet-stream");
echo "<div class='title-new-inner'>Спасибо! Ваше сообщение отправлено. В ближайшее время с вами свяжутся по указанному email.</div>";
?>
Наталья Комарова
|
|
|
18.06.2017, 19:05
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Цитата:Файл к письму прикрепляется и доступен из админки, но в теле письма ссылка на вложение неактивна, отображается в виде:
Приложение: /netcat_files/54/61/file_name.
Именно так Вы и написали в шаблоне письма: "Приложение: $f_File_url";"
Т.е. только URL.
А вообще, данная строка "/netcat_files/54/61/file_name" в теле письма не нужна, файлы же прикрепляются и они находятся после текстовой части письма.
Stark
|
|
|
19.06.2017, 16:44
|
|
Gvenv_nk
Наталья Комарова
Зарегистрирован: 2011-11-07
Сообщений: 43
|
Здравствуйте, Игорь! Спасибо за ответ.
Ну да, а если я в шаблоне письма напишу "Приложение: $f_File";" то в письме выведется array
А само письмо при любом раскладе приходит без вложений, стало быть, я еще где-то как-то в этом шаблоне накосячила (((
Наталья Комарова
|
|
|
19.06.2017, 18:35
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Поменяйте местами $mailer->send и $mailer->attachFile, т.е. сделайте так:
Код:$mailer->mailbody(strip_tags($f_Mail));
$mailer->attachFile("$DOCUMENT_ROOT.$f_File_url", "$f_File[name]", "application/octet-stream");
$mailer->send(($cc_settings[EmailTo] ? $cc_settings[EmailTo] : $system_env[SpamFromEmail]), $f_Email, $f_Email, 'ПИСЬМО С САЙТА adm-moskovsky.ru', $f_Name, $f_Phone, $f_Address, $f_Problem, $f_Text, $f_File);
Т.е. сначала прикрепляете файл, а потом отправляете письмо. А было наоборот.
Stark
|
|
|
20.06.2017, 09:08
|
|
Gvenv_nk
Наталья Комарова
Зарегистрирован: 2011-11-07
Сообщений: 43
|
Да, конечно, это абсолютно логично. Но, после того, как я поменяла местами эти строки, письмо вообще не приходит на почту.
Я вот нашла на форуме описание похожей проблемы, так там Руслан Густокашин дал такой совет (помимо того, что attach надо делать до send'а):
На каждый send надо заново формировать объект и, соответственно, аттач.
Мне, как чайнику, это абсолютно непонятно.
Наталья Комарова
|
|
|
22.06.2017, 07:39
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
В вашем случае ошибки в другом. Вот правильный вариант тех самых двух строчек:Код:
if ( $_FILES['f_File']['size'] > 0 ) $mailer->attachFile($DOCUMENT_ROOT.$f_File_url, $f_File_name, "application/octet-stream");
$mailer->send(($cc_settings[EmailTo] ? $cc_settings[EmailTo] : $system_env[SpamFromEmail]), $system_env[SpamFromEmail], $f_Email, 'ПИСЬМО С САЙТА adm-moskovsky.ru', $f_Name);
При этом в настройках системы, то есть в $system_env[SpamFromEmail] должен быть емайл с доменом, отправка с которого разрешена на вашем хостинге, то есть не мэйлрушная почта, не яндексовая и т.д. (иначе письма не будут отправляться из-за политик SPF).
Поля Name и Email в вашей форме должны быть обязательными для заполнения, иначе отправка тоже не произойдет.
Но аттач у вас не прикреплялся из-за того, что вы написали $f_File[name] вместо $f_File_name.
|