Чудилла Posted March 18, 2015 Report Share Posted March 18, 2015 (edited) Все доброго времени суток.Обратился клиент, не приходят письма о заказах, как выяснилось был заблокирован сервис STMP на сервере из-за (вируса) спама. Правильное решение избавится от php mail.Качаем swiftmailer https://github.com/swiftmailer/swiftmailerсохраняем папку lib в /api/lib/ Далее находим файл /api/Notify.phpНаходим функцию function email($to, $subject, $message, $from = '', $reply_to = '') { И меняем содержимое require_once('lib/swift_required.php'); /** * $transport = Swift_SmtpTransport::newInstance('smtp.yandex.ru', 465, 'ssl') * ->setUsername('email@yandex.ru') * ->setPassword('password'); * Можно создать любой емайл на яндексе и использовать в качестве отправки заказов и * других сообщений */ $transport = Swift_SmtpTransport::newInstance('smtp.google.com', 465, 'ssl') ->setUsername('my@example.com') ->setPassword('password'); $mailer = Swift_Mailer::newInstance($transport); $messages = Swift_Message::newInstance($subject) ->setFrom('my@example.com') ->setTo($to) ->setContentType("text/html; charset=UTF-8") ->setBody($message, 'text/html'); $result = $mailer->send($messages); И письма будут доходить 100% даже с выключенным сервисом STMPP.S По мне давно уже никто не использует php mail в качестве отправки писем. Edited March 18, 2015 by Чудилла Quote Link to post Share on other sites
bermando Posted July 6, 2015 Report Share Posted July 6, 2015 Все доброго времени суток.Обратился клиент, не приходят письма о заказах, как выяснилось был заблокирован сервис STMP на сервере из-за (вируса) спама. Правильное решение избавится от php mail.Качаем swiftmailer https://github.com/swiftmailer/swiftmailerсохраняем папку lib в /api/lib/ Далее находим файл /api/Notify.phpНаходим функцию function email($to, $subject, $message, $from = '', $reply_to = '') { И меняем содержимое require_once('lib/swift_required.php'); /** * $transport = Swift_SmtpTransport::newInstance('smtp.yandex.ru', 465, 'ssl') * ->setUsername('email@yandex.ru') * ->setPassword('password'); * Можно создать любой емайл на яндексе и использовать в качестве отправки заказов и * других сообщений */ $transport = Swift_SmtpTransport::newInstance('smtp.google.com', 465, 'ssl') ->setUsername('my@example.com') ->setPassword('password'); $mailer = Swift_Mailer::newInstance($transport); $messages = Swift_Message::newInstance($subject) ->setFrom('my@example.com') ->setTo($to) ->setContentType("text/html; charset=UTF-8") ->setBody($message, 'text/html'); $result = $mailer->send($messages); И письма будут доходить 100% даже с выключенным сервисом STMPP.S По мне давно уже никто не использует php mail в качестве отправки писем.после отправки выплевывает на пустую страницу( ничего с этим не могу поделать Quote Link to post Share on other sites
mishanya Posted July 6, 2015 Report Share Posted July 6, 2015 (edited) после отправки выплевывает на пустую страницу( ничего с этим не могу поделать включите вывод ошибок php и посмотрите какая ошибка Edited July 6, 2015 by mishanya Quote Link to post Share on other sites
Maksclub Posted August 14, 2015 Report Share Posted August 14, 2015 Белый экран появляется, если в качестве почты ввести почту вида: info@mysite.ru, которая на ЯндексеОбычная почта прокатывает без проблем Quote Link to post Share on other sites
Gloobus Posted August 22, 2015 Report Share Posted August 22, 2015 Правильное решение это свой VPS + настроенные SPF и DKIM!А это костыли! Не понимаю некоторых владельцев магазинов. Это же не бложек, да и сейчас цены на VPS не кусаются.Нет, сидят многие на самых "ужатых" тарифов какого нибудь задрипанного хостера, который режет все направо и налево Quote Link to post Share on other sites
fo011y Posted November 21, 2015 Report Share Posted November 21, 2015 Спасибо, очень помогло!И кстати сваливается в белое, потому что не указываете настройки почты. Сам только что проверил. Quote Link to post Share on other sites
baarseek Posted May 10, 2016 Report Share Posted May 10, 2016 Только в функции лучше, мне кажется, указать: ->setFrom(array('john@doe.com' => 'John Doe')) Чтобы в почте адрес выглядел красивее. Quote Link to post Share on other sites
palehin Posted May 10, 2016 Report Share Posted May 10, 2016 Вставил этот скриптОтправляю письма через ajaxВ обработчике вот такой код: <?php chdir('..'); require_once('api/Simpla.php'); $simpla = new Simpla(); $msg = '<b>Имя:</b> '.$simpla->request->post('username', 'string').'<br /> <b>Телефон или Email</b>: '.$simpla->request->post('tel', 'string').'<br /> <b>Отзыв:</b> '.$simpla->request->post('feed', 'string'); $simpla->notify->email($simpla->notify->settings->notify_from_email, 'Отзыв с сайта ads-irk.ru.org', $msg, '123'); ?> Но при попытке отправки в консоли показывает ошибку:500 (Internal Server Error) Quote Link to post Share on other sites
Kors Posted May 10, 2016 Report Share Posted May 10, 2016 Для кого-то такая отправка, возможно, и "правильная". А если чуть проанализировать способ, то видно, то что в новом варианте функции mail из пяти параметров последние два просто ИГНОРИРУЮТСЯ - ошибка принципиальная. Из-за этого некоторые письма, например, оповещение админу о сообщение со страницы Контакты, будет приходить не в таком удобном виде, как обычно, и написать на него ответ комфортным образом без выискивания и подстановки ручками email отправителя админу не удастся... И не исключено, что в некоторых случаях из-за неуказанного в заголовке значения from отправка может и не сработать... Quote Link to post Share on other sites
mishanya Posted May 10, 2016 Report Share Posted May 10, 2016 (edited) Вставил этот скриптОтправляю письма через ajaxВ обработчике вот такой код: <?php chdir('..'); require_once('api/Simpla.php'); $simpla = new Simpla(); $msg = '<b>Имя:</b> '.$simpla->request->post('username', 'string').'<br /> <b>Телефон или Email</b>: '.$simpla->request->post('tel', 'string').'<br /> <b>Отзыв:</b> '.$simpla->request->post('feed', 'string'); $simpla->notify->email($simpla->notify->settings->notify_from_email, 'Отзыв с сайта ads-irk.ru.org', $msg, '123'); ?> Но при попытке отправки в консоли показывает ошибку:500 (Internal Server Error) что это за шедевр? $simpla->notify->settings->notify_from_email там должно быть $simpla->settings->notify_from_email из-за этого 500я ошибка. потому что вы пытаетесь вызвать массив настроек из notify где его нет. вообще лучше оформить это все отдельной ф-ей в api/Notify.php и вызывать ее $simpla->notify->review_admin($msg); например. посмотрите как работает Feedback, там все пишется в базу а потом по айди выбирается Edited May 10, 2016 by mishanya Quote Link to post Share on other sites
palehin Posted May 10, 2016 Report Share Posted May 10, 2016 что это за шедевр? $simpla->notify->settings->notify_from_email там должно быть $simpla->settings->notify_from_email из-за этого 500я ошибка. потому что вы пытаетесь вызвать массив настроек из notify где его нет. вообще лучше оформить это все отдельной ф-ей в api/Notify.php и вызывать ее $simpla->notify->review_admin($msg); например. посмотрите как работает Feedback, там все пишется в базу а потом по айди выбирается Спасибо Вам в очередной раз) Quote Link to post Share on other sites
Axotn1k Posted May 19, 2016 Report Share Posted May 19, 2016 При настройке у меня ошибка Parse error: syntax error, unexpected T_REQUIRE_ONCE, expecting T_FUNCTION in /..../api/Notify.php on line 15 что не так сделал ? Quote Link to post Share on other sites
Kors Posted May 19, 2016 Report Share Posted May 19, 2016 Посадил ошибку в файле Notify.php. Проверяйте аккуратно... Quote Link to post Share on other sites
Axotn1k Posted May 20, 2016 Report Share Posted May 20, 2016 (edited) Посадил ошибку в файле Notify.php. Проверяйте аккуратно...Та все сделал по инструкции, скачал посылке swiftmailer папку lib , закинул по пути /api/libДальше удалил строчку function email($to, $subject, $message, $from = '', $reply_to = '') { и добавил вместо нее require_once('lib/swift_required.php'); /** * $transport = Swift_SmtpTransport::newInstance('smtp.yandex.ru', 465, 'ssl') * ->setUsername('email@yandex.ru') * ->setPassword('password'); * Можно создать любой емайл на яндексе и использовать в качестве отправки заказов и * других сообщений */ $transport = Swift_SmtpTransport::newInstance('smtp.google.com', 465, 'ssl') ->setUsername('my@example.com') ->setPassword('password'); $mailer = Swift_Mailer::newInstance($transport); $messages = Swift_Message::newInstance($subject) ->setFrom('my@example.com') ->setTo($to) ->setContentType("text/html; charset=UTF-8") ->setBody($message, 'text/html'); $result = $mailer->send($messages); Все же верно, вот мой Notify.php http://rgho.st/8ZpmqmHSfтам и ошибку сделать нету где Edited May 20, 2016 by Axotn1k Quote Link to post Share on other sites
Kors Posted May 20, 2016 Report Share Posted May 20, 2016 Находим функцию И меняем содержимоеДальше удалил строчку Согласно инструкции из #1 строчку надо было только НАЙТИ, удалять ее - это и есть ошибка. Удалять надо то, что в ТЕЛЕ функции, то есть строки, обозначенные ниже точками: function email($to, $subject, $message, $from = '', $reply_to = ''){....................................................................} Quote Link to post Share on other sites
Axotn1k Posted May 20, 2016 Report Share Posted May 20, 2016 Согласно инструкции из #1 строчку надо было только НАЙТИ, удалять ее - это и есть ошибка. Удалять надо то, что в ТЕЛЕ функции, то есть строки, обозначенные ниже точками: function email($to, $subject, $message, $from = '', $reply_to = ''){....................................................................} Находим функцию, И меняем содержимое Равнозначно заменить функцию на другу, следственно удалить старую, и вставить новую, разве нет ? Quote Link to post Share on other sites
Axotn1k Posted May 20, 2016 Report Share Posted May 20, 2016 (edited) Сделал как правильно, заменил только функцию, ошибка Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host smtp.yandex.ru [Connection timed out #110]' in /home/puma1639/public_html/api/lib/classes/Swift/Transport/StreamBuffer.php:269 Stack trace: #0 /home/puma1639/public_html/api/lib/classes/Swift/Transport/StreamBuffer.php(62): Swift_Transport_StreamBuffer->_establishSocketConnection() #1 /home/puma1639/public_html/api/lib/classes/Swift/Transport/AbstractSmtpTransport.php(113): Swift_Transport_StreamBuffer->initialize(Array) #2 /home/puma1639/public_html/api/lib/classes/Swift/Mailer.php(79): Swift_Transport_AbstractSmtpTransport->start() #3 /home/puma1639/public_html/api/Notify.php(40): Swift_Mailer->send(Object(Swift_Message)) #4 /home/puma1639/public_html/api/Notify.php(152): Notify->email('info@site.ru', '???????????? ??...', '<h1 style='font...', 'Andrii Shendiuk...', 'Andrii Shendiuk...') #5 /home/puma1639/public_html/view/FeedbackView.php(51): Notify->email_feedback_admin(275) #6 /home/puma1639/publi in /home/puma1639/public_html/api/lib/classes/Swift/Transport/StreamBuffer.php on line 269 Edited May 20, 2016 by Axotn1k Quote Link to post Share on other sites
Kors Posted May 20, 2016 Report Share Posted May 20, 2016 'Connection could not be established with host smtp.yandex.ru [Connection timed out #110]' Это уже ошибка другая. Ошибка не от скрипта, а от соединения со сторонним сервером.Возможно, дело в настройках хостинга...Или в неверном логине-пароле (если Вы их задавали)... Quote Link to post Share on other sites
Axotn1k Posted May 20, 2016 Report Share Posted May 20, 2016 Это уже ошибка другая. Ошибка не от скрипта, а от соединения со сторонним сервером.Возможно, дело в настройках хостинга...Или в неверном логине-пароле (если Вы их задавали)...Спасибо, оказалось хостер закрыл доступ к серверу smtp.yandex.ruнаписал в саппорт, открыли доступ, и все рабортает! Quote Link to post Share on other sites
Axotn1k Posted May 27, 2016 Report Share Posted May 27, 2016 Такой вопрос, как сделать чтобы письмо приходило на почту от имени емейла который указал пользователь в контактной форме, чтобы на него можно было ответить, сейчас приходит от имени сайту, отвечаю сам себе. В настройках стоит: ->setFrom(array('info@site.ru' => 'Описание сайта')) Quote Link to post Share on other sites
Kors Posted May 27, 2016 Report Share Posted May 27, 2016 Как раз про этот недостаток и написано в #9.Попробуйте поменять ->setFrom('my@example.com')на ->setFrom($from) Еще можно пробовать менять поле ReplyTo... Quote Link to post Share on other sites
Axotn1k Posted May 30, 2016 Report Share Posted May 30, 2016 (edited) Как раз про этот недостаток и написано в #9. Попробуйте поменять ->setFrom('my@example.com')на ->setFrom($from) Еще можно пробовать менять поле ReplyTo...Уже менял так, ошибку выдает при отправке. Fatal error: Uncaught exception 'Swift_RfcComplianceException' with message 'Address in mailbox given Edited May 30, 2016 by Axotn1k Quote Link to post Share on other sites
Kors Posted May 30, 2016 Report Share Posted May 30, 2016 Ошибку-то КАКУЮ? Зачем экономите на написании ПОЛНОГО текста ошибки? Quote Link to post Share on other sites
Axotn1k Posted May 31, 2016 Report Share Posted May 31, 2016 Ошибку-то КАКУЮ? Зачем экономите на написании ПОЛНОГО текста ошибки?Извините я думала это полный текст ошибки, Вот Fatal error: Uncaught exception 'Swift_RfcComplianceException' with message 'Address in mailbox given [Andrei Shenduh <lutsk40@gmail.com>] does not comply with RFC 2822, 3.6.2.' in /home/puma1639/public_html/api/lib/classes/Swift/Mime/Headers/MailboxHeader.php:348 Stack trace: #0 /home/puma1639/public_html/api/lib/classes/Swift/Mime/Headers/MailboxHeader.php(263): Swift_Mime_Headers_MailboxHeader->_assertValidAddress('Andrei Shenduh ...') #1 /home/puma1639/public_html/api/lib/classes/Swift/Mime/Headers/MailboxHeader.php(106): Swift_Mime_Headers_MailboxHeader->normalizeMailboxes(Array) #2 /home/puma1639/public_html/api/lib/classes/Swift/Mime/Headers/MailboxHeader.php(63): Swift_Mime_Headers_MailboxHeader->setNameAddresses(Array) #3 /home/puma1639/public_html/api/lib/classes/Swift/Mime/SimpleMimeEntity.php(592): Swift_Mime_Headers_MailboxHeader->setFieldBodyModel(Array) #4 /home/puma1639/public_html/api/lib/classes/Swift/Mime/SimpleMessage.php(213): Swift_Mime_SimpleMimeEntity->_setHeaderFieldModel('From', Array) #5 /home/p in /home/puma1639/public_html/api/lib/classes/Swift/Mime/Headers/MailboxHeader.php on line 348 Quote Link to post Share on other sites
Kors Posted May 31, 2016 Report Share Posted May 31, 2016 Пробуйте ставить адрес без излишеств, то естьlutsk40@gmail.comвместоAndrei Shenduh <lutsk40@gmail.com> Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.