Я все равно не могу найти причину, как пользоваться этим мейлером... Как поменять кодировку, ничего не работает.
@romach, Вы пытаетесь спорить, но совершенно не вчитываетесь в мои сообщения, а вырываете отдельные фразы. Я говорю о том, что человек, написавший этот скрипт не осилил бы phpmailer.
@Danil005 PHP: $mail->CharSet = 'UTF-8'; @Maputo где там про не осилил? И с каких пор это вообще стало аргументом? У меня был таск на обработку почты, много писем, тысячи их, валятся на один бедный почтовый ящик, при чем частенько от 1с-ников и пхпшников, которые ниасилили. Дык вот, не считая пакета, умеющего разгребать почту сделанную культяпками, что у этих людей вместо рук, пришлось ещё сверху костылей добавить, потому что неисповедимы пути пхпшника формирующего письмо с вложением вручную. Ненависть.
Нет. Надо делать правильно, либо стараться делать правильно, либо не делать вообще. Вы ж не пойдете к врачу который неосилил? Почему тут должно быть по другому?
@romach, тут никто не знает как правильно Все делают вид, что знают. Но правильного пути просто не существует. Если Вы не согласитесь - то мы разведем демагогию А мне надоедает это очень. Последний ход за Вами и я умолкаю)
Это не магия и не поиск альтернативного пути. Почте уже не один десяток лет, есть ряд rfc где описано всё от и до. Демагогия же возникает ровно в тот момент, когда за аргументы начинают считать свои домыслы. Собсно, у меня тоже всё.
О господи, философ от мира веб-разработки. Что значит "правильного пути не существует"? С чего ты это взял? Это все волшебство и вопрос веры чтоли? Я-то наивный, думал, что правильный путь это вопрос соблюдения стандартов и чтения документации. А сервер почтовый ты как настраивать будешь? А когда гугл тебя нахрен пошлет потому, что у тебя ни DKIM, ни даже сопливого реверс-DNS нет, ты тоже будешь им в поддержку писать, что они ничего не понимают, и правильного пути не существует? --- Добавлено --- А можно не вводить. А для отправки почты вообще почтовый ящик иметь не обязательно и аккаунт может не существовать - достаточно чтобы домен почты совпадал с доменом отправителя и, желательно, чтобы в DNS была соответствующая запись. Но чтоб это знать, надо же хоть чуть чуть разобраться в предмете, который собираешься обсуждать с видом знатока. Не обращал внимание, что почту слать умеет любая сиране джумла? Даже с шаред хостингов. Принимать, правда, не умеет, но шлет без проблем. При этом отдельный почтовый аккаунт не просит создавать. И пароли указывать. Мистика, да и только. Или нет...
Не помогает... --- Добавлено --- А не может ли это происходить из-за того, что я делаю include("mail.mail.php), а внутри сам шаблон в переменной $messages, ну и после include я произвожу все эти манипуляции с отправкой?
Покажи код, как ты мейлером отправку делаешь? И в какой кодировке у тебя текст на самом деле? А то может у тебя там таки win-1251, например, а мы в UTF-8 усиленно пихаем ее.
Ничёси холивар из-за неправильной кодировки письма попер... ТС, в гугле справа менюшка-гамбургер, посмотри заголовки, которые приходят на почту.
@Fell-x27 Вообщем что я делаю. Я воспользовался Mail-классом, который вы порекомендовали, по-изучал его функции и т.д. Впрочем говоря, я прикрепил функцию в свой класс module: PHP: public function __mail($to, $subject, $messages, $settings='') { $MAIL=$settings; $this->mail->CharSet='UTF-8'; $this->mail->setFrom('no-reley@vixed.ru', 'Vixed.Ru'); $this->mail->addAddress($to); $this->mail->isHTML(true); $this->mail->Subject=$subject; $this->mail->Body=$messages; $this->mail->send(); } А с Ajax стороны выполнял эту функцию: PHP: <?public function __Ajax_Forgot($email) { if( empty($email) ) $error="Вы должны ввести Email-адрес."; else $db=$this->module->db->getAll("SELECT * FROM ?n WHERE ?n=?s", 'users', 'email', $email); if( empty($db) ) $error="Такой Email-адрес не зарегистрирован у нас."; if( !$error ) { $hash=strtoupper(md5(rand(0,10000))); $URL='https://vixed.ru/'; $MAIL=[ 'username'=>$db[0]['user'], 'hash'=>$hash ]; //Здесь у меня прикручен еще один файл: include($_SERVER['DOCUMENT_ROOT'].'/system/mails/forgot.mail.php'); $this->module->db->query("INSERT INTO ?n(?n,?n,?n,?n) VALUES(?s,?s,?s,?s)", 'change_password_profile', 'user', 'sign', 'date', 'type', $db[0]['user'], $hash, $this->module->__unix(), 'forgot'); $this->module->__mail($email, 'Восстановление пароля', $message, $setting); echo json_encode(['info'=>'На вашу почту был выслан ключ, по которому необходимо пройти.', 'type'=>'success']); } else echo json_encode(['info'=>$error, 'type'=>'error']); И наконец сам файл forgot.mail.php: PHP: <? $message=' <div style="background: #E7E7E7;"> <div style=\' font-family: "Roboto", sans-serif; -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; border-radius: 0; -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); -ms-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); border: none; position: fixed; top: 0; left: 0; z-index: 12; width: 100%; background-color: #4CAF50; height: 70px; \'> <div style=" padding: 10px 7px; "> <a style=" white-space: nowrap; -ms-text-overflow: ellipsis; -o-text-overflow: ellipsis; text-overflow: ellipsis; overflow: hidden; float: left; padding: 10px 20px; font-size: 22px; color: #fff; margin-right: 10px; margin-left: -10px; margin-top: 4px; ">Vixed.Ru - фриланс площадка</a> </div> </div> <br> <div style="width: 100%; height: 100%; position: absolute; top: 0; left: 0; overflow: auto;"> <div style="width: 600px; height: 250px; position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto;"> <div style="width: 100%;"> <p align="center"> Вы подали заявку на изменение пароля. Для продолжения необходимо нажать на кнопку снизу. После чего вы сможете сменить пароль. </p> </div> <p align="center"> <a href="'.$URL.'forgot?user='.$MAIL[username].'&hash='.$MAIL[hash].'&type_pass=forgot&ssl=1" style=" background-color:#4CAF50; border-radius: 4px; color: #ffffff; display: inline-block; font-family: sans-serif; font-size: 13px; font-weight: bold; line-height: 35px;text-align: center; text-decoration: none; width: 320px; -webkit-text-size-adjust:none; cursor: pointer; ">Сменить пароль</a> </div> </div> </div>'; А что касаемо кодировки, то весь проект написан на UTF8.
Окей, вечером гляну. А пока присоединяюсь к предыдущему оратору - проверь заголовки письма принятого.
Они по всей видимости нормальные. Потому что отправляя без include, в нормальной кодировке отображается.
Хм, наверное так и есть. Значит не делай инклуд прямо в письмо. Чтобы вытащить шаблон наружу можно сделать так: 1) В шаблоне написать return, а дальше уже содержимое текстом. 2) Перед отправкой письма сделать $data = include(шаблон); 3) В переменной $data будет содержимое из инклуда. 4) Вставляешь ее в письмо. return в include и возвращение инклудом этого значения, как если бы просто была вызвана функция это не хак, не костыль и не индусская лажа, это документированная фича.
А вот это зря. Для классов есть autoload. И никаких ретурнов из инклуда быть не должно по-хорошему. Опиши архитектуру своего решения подробнее.
@Fell-x27 PHP: require(__DIR__ . '/MFVbase.php'); class MFV extends MFV_class\MFVbase {} $classes=require(__DIR__ . '/classes.php'); MFV::classMap($classes); PHP: namespace MFV_class; define("PATH_MFV", __DIR__); class MFVbase { public $classes=[]; public function classMap($classes) { foreach ($classes as $key => $value) { include($value); } } public function xss() { $xss = new \voku\helper\AntiXSS(); $xss_clean=$xss->xss_clean($str); return $xss_clean; } } classes.php PHP: return [ 'mfv\base\MySQL'=> PATH_MFV . '/base/mysql.class.php', 'mfv\web\Application'=> PATH_MFV . '/web/Application.php', 'mfv\web\Html'=> PATH_MFV . '/web/Html.php', 'mfv\web\AdditionalVar'=> PATH_MFV . '/web/AdditionalVar.php', ];