Возникла проблема со Swift Mailer Не отправлять сообщения - PullRequest
3 голосов
/ 15 октября 2011

У меня проблема с swift mailer, он не отправляет сообщение пользователю. Я извлек библиотеку в папку inc на своем веб-сайте и создал следующее сообщение для отправки swift mailer:

ПРИМЕЧАНИЕ: Если вы можете предложить другие решения, кроме 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.

Ответы [ 3 ]

4 голосов
/ 24 октября 2011

Я боюсь, что на ваш вопрос нельзя ответить конкретно, потому что рядом с конкретными техническими проблемами вы можете столкнуться со сложными проблемами, требующими прикосновения к нескольким местам, что не является тривиальным.

Вопрос отправки

Прежде всего, вы можете отправлять электронные письма с помощью SwitfMailer, это должно "просто работать" tm . Однако, если используемый вами транспорт, например SMTP-сервер, не доставляет электронные письма, он не связан напрямую с SwiftMailer (так как он не будет связан с PHP mail).

Однако вы можете использовать $result от SwitfMailer, чтобы выяснить, не запускал ли SwiftMailer какие-либо ошибки при отправке электронного письма. См. Устранение неполадок SMTP SwiftMailer (архивная копия) для получения дополнительной информации на случай, если у вас возникли проблемы с работой SwiftMailer с вашим SMTP-сервером.

Проблема спама

На это нельзя конкретно ответить. Подобные вопросы время от времени всплывают здесь на SO, но чаще всего на них нет конкретных ответов, потому что в этой теме рассказывается о том, какой именно контент содержит ваша электронная почта (заголовок электронной почты и основной объем спама), с какого сервера она отправляется (IP-адрес). и Оценка спама на основе имени хоста, например черные списки, а также конфигурация DNS для имени хоста, см. SPF ) и другие данные.

Использование SwiftMailer может помочь, так как вы можете обмениваться почтовыми бэкэндами, например, купить коммерческий SMTP-шлюз, который нацелен на снижение нагрузки на ваши письма, оцениваемые как спам. Однако, как я написал в другом ответе / комментарии: весь бизнес работает со спамом - на «плохой» и «хорошей» стороне. Поэтому не всегда рекомендуется доверять какой-либо из этих сущностей.

Вместо этого вы можете начать узнавать о том, как технически работает электронная почта, как работает оценка спама и что вы можете сделать, чтобы отправлять правильные электронные письма через правильно настроенный SMTP-сервер. Это некоторая работа, и она не может быть предоставлена ​​в качестве ответа здесь, потому что она очень широка.

0 голосов
/ 18 апреля 2013

Попробуйте проверить ваш почтовый ящик, когда почтовый ящик исчерпал свою квоту, он не будет отправлять электронную почту, моя учетная запись электронной почты SMTP снова отправляет электронные письма, как только я очищаю почтовый ящик.Я установил квоту почтового ящика с помощью CPANEL, планируя, что никто не будет отправлять ответы на этот ящик, но получатели электронной почты отправляли ответы на этот почтовый ящик и делали почтовый ящик заполненным.

0 голосов
/ 22 октября 2011

Убедитесь, что ваш сервер разрешает 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...