Возникла проблема с Swift Mailer. Не отправляются сообщения

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

ПРИМЕЧАНИЕ. Если вы можете предложить другие решения помимо SwiftMailer, не могли бы вы оставить комментарий.

require_once 'inc/lib/swift_required.php';

    //Create the Transport
    $transport = Swift_SmtpTransport::newInstance('mail.mywebsite.com', 25)
    ->setUsername('[email protected]')
    ->setPassword('myPassword')
    ;

    $mailer = Swift_Mailer::newInstance($transport);

    //Define Message Subject
    $message = Swift_Message::newInstance('myWebsite Registration')

    //e-mail from
    ->setFrom(array('[email protected]' => '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(); и сделать электронную почту не спамом? Пожалуйста, не предлагайте что-то вроде: используйте свой хост-сервер вместо своего домена, например. вместо использования [email protected] используйте [email protected].


person Ilja    schedule 15.10.2011    source источник
comment
Вы проверили журнал ошибок php?   -  person Adam Hopkinson    schedule 15.10.2011
comment
сейчас проверил, ошибок не выдает.   -  person Ilja    schedule 15.10.2011
comment
и это работало до того, как я перешел на быструю почту, я использовал mail(); работал, но все письма попадали в спам, поэтому я решил изменить его.   -  person Ilja    schedule 15.10.2011
comment
Вы проверяли свои журналы MTA?   -  person Paté    schedule 19.10.2011
comment
У вас настроены записи SPF для вашего домена? Вы отправляете правильные заголовки со своей почтой? Предоставляете ли вы части текстового эквивалента с содержимым HTML? и т.п.   -  person Orbling    schedule 19.10.2011
comment
@Orbling Да, я все это проверил, и все правильно, › Паштет, что ты имеешь в виду?   -  person Ilja    schedule 19.10.2011
comment
Можете ли вы вставить пример сообщения, которое было классифицировано как спам (вычеркните все конфиденциальное)? Собственная функция PHP mail() не должна быть причиной этого, но это могут быть заголовки почты или содержимое. Короткие текстовые сообщения с изображениями часто используются для рассылки спама, поэтому проблема может заключаться в этом.   -  person Phil Lello    schedule 20.10.2011
comment
Несколько советов по обходу спам-фильтров campaignmonitor.com/blog/post/3534/delivering-to-gmail-inboxes/ и spamlinks.net/prevent-senders.htm   -  person Petah    schedule 20.10.2011
comment
Я вспомнил статью CodingHorror, которая может быть вам полезна: codinghorror.com/blog/2010/04/   -  person Jan-Henk    schedule 21.10.2011


Ответы (3)


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

Проблема с отправкой

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

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

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

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

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

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

person hakre    schedule 24.10.2011
comment
@Patt: я обновил ссылку на исходный контент (он заархивирован). - person hakre; 12.10.2013
comment
Здорово! Спасибо @hakre :) - person Mick; 12.10.2013

Убедитесь, что ваш сервер разрешает SMTP-соединения, и если да, убедитесь, что он подключен к порту 25 и не использует SSL.

Затем поместите свой код в блок try/catch, чтобы перехватить любое исключение.

try {
echo '<pre>';
    $transport = Swift_SmtpTransport::newInstance('mail.mywebsite.com', 25)->setUsername('[email protected]')->setPassword('myPassword');
    $mailer = Swift_Mailer::newInstance($transport);
    $message = Swift_Message::newInstance('myWebsite Registration')
        ->setFrom(array('[email protected]' => 'myWebsite'))
        ->setTo(array('$email1' => '$username'))
        ->setBody('Message body Here');
    $result = $mailer->send($message);
print_r($result);
} catch (Exception $e) {
    echo $e->getMessage();
}
person xmarcos    schedule 22.10.2011
comment
Это проблема, потому что я использую SSL на странице, которая отправляет электронную почту, есть ли способ обойти это? - person Ilja; 22.10.2011

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

person Yohanip    schedule 18.04.2013