2012-01-04 1 views
2

Я пытаюсь отправить почту через sendgrid, вот мой код:отправка почты через sendgrid

// Setup Swift mailer parameters 
     $transport = Swift_SmtpTransport::newInstance('smtp.sendgrid.net', 25); 
     $transport->setUsername($username); 
     $transport->setPassword($password); 
     $swift = Swift_Mailer::newInstance($transport); 

     // Create a message (subject) 
     $message = new Swift_Message($subject); 

     // attach the body of the email 
     $message->setFrom($from); 
     $message->setBody($html, 'text/html'); 
     $message->setTo($to); 
     $message->addPart($text, 'text/plain'); 

     // send message 
     if ($recipients = $swift->send($message, $failures)) 
     {    
      // This will let us know how many users received this message 
      echo 'Message sent out to '.$recipients.' users';exit; 
     } 

Я получил эту ошибку: Swift_TransportException

Ожидаемого код ответа 250, но получил код «», с сообщение ""

... \ SwiftMailer \ Lib \ классы \ Свифта \ Транспорт \ AbstractSmtpTransport.php (422)

пожалуйста, помогите мне!

+2

Обратитесь к поставщику библиотеки за вопросами поддержки. – hakre

ответ

3

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

$result = $swift->send($message); 

Если это работает, вы можете попробовать этот код, и если он работает настроить его таким образом он показывает получатель вместо неудач.

if (!$swift->send($message, $failures)) 
{ 
    echo "Failures:"; 
    print_r($failures); 
} 

Кроме этого, проверьте, не являются ли все переменные пустыми.

Дополнительные примеры см: http://swiftmailer.org/docs/sending.html#quick-reference-for-sending-a-message

UPDATE

Sendmail код:

//Create the Transport 
$transport = Swift_MailTransport::newInstance(); 

//Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

//Create a message 
$message = Swift_Message::newInstance('Subject') 
    ->setFrom(array('[email protected]' => 'John Doe')) 
    ->setTo(array('[email protected]', '[email protected]' => 'A name')) 
    ->setBody('Here is the message itself') 
    ; 

//Send the message 
$numSent = $mailer->send($message); 

printf("Sent %d messages\n", $numSent); 
+0

спасибо за помощь, но это не сработает :(Может быть, некоторые параметры конфигурации не в порядке? – BKF

+0

Вы получили еще одну ошибку или же одну? Ваш код выглядит хорошо, возможно, сначала вы должны попробовать функцию sendmail, чтобы увидеть, это проблема с сервером. Я обновляю свой пост с кодом. – mat

+0

Он работает по этому коду: $ transport = Swift_MailTransport :: newInstance(); но я не получаю почту, это значит? – BKF

0

Я просто с тем же сообщение об ошибке с моей Symfony 2 конфигурации для sendgrid. Надеюсь, вы видели это руководство: http://docs.sendgrid.com/documentation/get-started/integrate/examples/symfony-example-using-smtp/

Попробуйте изменить порт на 587. Сообщите мне, что это работает.

+0

smtp.sendgrid.net не поддерживается на моем сервере (внешние хосты) – BKF

5

(полное раскрытие информации: Я работаю в SendGrid как веб-разработчик)

Недавно мы выпустили новую PHP библиотеку, которая может решить некоторые из этих проблем. Мы по-прежнему используем Swift, но, если я помню, библиотека накладывает на вас эту информацию, что делает ее немного легче получить.

Не стесняйтесь обращаться к нам за помощью!

http://github.com/sendgrid/sendgrid-php

+0

awesome. Однако я не нашел, как узнать, отправлено ли электронное письмо, и если не удалось найти ошибки :( –

+0

Для этого вы хотите установить конечную точку для получения информации из системы уведомления о событиях SendGrid Мы будем проверять эту конечную точку на каждом шагу (если вы включите «пакетный» режим, он будет выставлять партию JSON для отправки каждую минуту или около того, если вы отправляете много электронной почты). Данные JSON, если он отскакивает/etc, также должен возвращать ошибку. Проверьте http://sendgrid.com/docs/API_Reference/Webhooks/event.html – iandouglas

0

Может быть, вы где слишком быстро? Я столкнулся с такой же проблемой после кикстарта с помощью sendgrid и теперь с помощью web-api, у меня появилась реальная ошибка «отключена учетная запись» ...

Я не читал полный текст после первого входа - они рассмотрят сначала учетную запись, пока она не активируется ...ОК, так что я жду ^^

2

два resons:

  1. вы можете иметь данные Authentification неправильные

  2. ваш счет еще может быть предоставлен, так что вы должны немного подождать, чтобы это было полностью активированный

так

  • проверить все данные из приложения аутентификации/конфигурация/mail.php в соответствии с данными из https://sendgrid.com/docs/Integrate/index.html

  • проверки также не имеет верхнее сообщение/уведомление на sendgrid счета, как:

Ваша учетная запись по-прежнему предоставляется, возможно, вы не сможете отправить email.