У меня проблема с быстрой почтой, она не отправляет сообщение пользователю, я извлек библиотеку для папки inc на своем веб-сайте и создал следующее сообщение для быстрой почты для отправки:
ПРИМЕЧАНИЕ. Если вы можете предложить другие решения, помимо SwiftMailer, не могли бы вы оставить комментарий.
require_once 'inc/lib/swift_required.php'; //Create the Transport $transport = Swift_SmtpTransport::newInstance('mail.mywebsite.com', 25) ->setUsername('info@mywebsite.com') ->setPassword('myPassword') ; $mailer = Swift_Mailer::newInstance($transport); //Define Message Subject $message = Swift_Message::newInstance('myWebsite Registration') //e-mail from ->setFrom(array('info@mywebsite.com' => 'myWebsite')) //e-mail to ->setTo(array('$email1' => '$username')) //e-mail body ->setBody(' Message body Here ') ; $result = $mailer->send($message); //Show user message after message has been sent include_once 'msgToUser.php'; exit();
Я протестировал его, и я не получил сообщение, и я не понимаю, почему, я следил за инструкциями на официальном сайте: http://swiftmailer.org/docs/sending.html
Может ли кто-нибудь предположить, в чем проблема?
ПРИМЕЧАНИЕ. Я использовал PHP mail();
прежде чем отправлять электронные письма, но они были классифицированы как спам. Если возможно, кто-нибудь может предложить решение о том, как использовать mail();
и делать сообщения электронной почты не СПАМ? Пожалуйста, не предлагайте что-то вроде: используйте свой хост-сервер вместо своего домена, например, вместо использования info@yourdomain.com используйте info@yourhost.com.
Я боюсь, что на ваш вопрос нельзя ответить конкретно, потому что рядом с конкретными техническими проблемами вы можете столкнуться с сложными проблемами здесь, которые нуждаются в нескольких местах, которые нужно коснуться, что не является тривиальным.
Отправляющий вопрос
Прежде всего, вы можете отправлять электронные письма с помощью SwitfMailer, это должно «просто работать» tm . Однако, если используемый вами транспорт, например, SMTP-сервер, не доставляет электронные письма, которые напрямую не связаны с SwiftMailer (так как это не связано с PHP- mail
).
Однако вы можете использовать $result
от SwitfMailer, чтобы узнать, запущен ли сам SwiftMailer какие-либо ошибки, отправляющие электронное письмо. См. « Устранение неполадок SMTP SwiftMailer» (архивированное копирование) для получения дополнительной информации, если у вас возникли проблемы с тем, чтобы SwiftMailer работал с вашим SMTP-сервером.
Спам-выпуск
На это нельзя ответить. Подобные вопросы появляются здесь на SO время от времени, но чаще всего на них не особо ответят, потому что этот вопрос простирается на то, что точный контент имеет ваш адрес электронной почты (заголовок электронной почты и тело Spam scoring), с какого сервера он отправляется (IP-адрес и основанный на Hostname спам, например, черные списки, а также конфигурация DNS для Hostname, см. SPF ) и другие материалы.
Использование SwiftMailer может помочь, поскольку вы можете обмениваться почтовыми серверами, например, покупать коммерческий SMTP-шлюз, который фокусируется на том, чтобы снизить нагрузку на ваши письма, набранные как спам. Однако, как я написал это в другом ответе / комментарии: весь бизнес работает на спаме – на «плохой» и «хорошей» стороне. Поэтому не всегда желательно доверять любому из этих объектов.
Вместо этого вы можете начать узнавать о том, как электронная почта технически работает, как работает подсчет спама и что вы можете сделать, чтобы отправлять правильные письма по правильно настроенному SMTP-серверу. Это некоторая работа, и она не может быть предоставлена в качестве ответа здесь, потому что она очень широкая.
Убедитесь, что ваш сервер поддерживает SMTP-соединения, и если да, убедитесь, что он находится на порту 25 и не использует SSL.
Затем заверните свой код в блок try / catch, чтобы поймать любое исключение.
try { echo '<pre>'; $transport = Swift_SmtpTransport::newInstance('mail.mywebsite.com', 25)->setUsername('info@mywebsite.com')->setPassword('myPassword'); $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance('myWebsite Registration') ->setFrom(array('info@mywebsite.com' => 'myWebsite')) ->setTo(array('$email1' => '$username')) ->setBody('Message body Here'); $result = $mailer->send($message); print_r($result); } catch (Exception $e) { echo $e->getMessage(); }
Попробуйте проверить свой почтовый ящик, когда почтовый ящик исчерпал его квоту, он не отправит никаких сообщений по электронной почте, я снова запустил почтовую учетную запись SMTP, как только я очищу почтовый ящик. Я установил квоту почтовых ящиков через планирование CPANEL, чтобы никто не отправил ответы на это поле, но получатели писем отправили ответы на этот почтовый ящик и сделали почтовый ящик полным.