通过sendgrid发送邮件

时间:2012-01-04 10:33:40

标签: php swiftmailer 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)

请帮助我!

5 个答案:

答案 0 :(得分:5)

(完全披露:我作为网络开发人员在SendGrid工作)

我们最近发布了一个新的PHP库,可以解决其中的一些问题。我们仍然使用Swift但是如果我记得的话,图书馆现在为你设置了这些东西,让它更容易滚动。

不要犹豫与我们联系寻求帮助!

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

答案 1 :(得分: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

<强>更新

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('john@doe.com' => 'John Doe'))
  ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
  ->setBody('Here is the message itself')
  ;

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

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

答案 2 :(得分:2)

两个人:

  1. 您的身份验证数据可能错误

  2. 您的帐户可能仍在配置中,因此您必须等待一段时间才能完全激活

  3. 所以

      

    您的帐户仍在配置中,您可能无法发送   电子邮件。

答案 3 :(得分:0)

我只是在发送带有针对sendgrid的Symfony 2配置时出现了相同的错误消息。希望您已经看过本手册:http://docs.sendgrid.com/documentation/get-started/integrate/examples/symfony-example-using-smtp/

尝试将端口更改为587.让我知道它有效。

答案 4 :(得分:0)

也许你在哪里太快了?使用sendgrid启动后我面临同样的问题,现在使用web-api,我得到了真正的错误,“帐户被禁用”......

首次登录后我没有阅读全文 - 他们会首先查看帐户,直到它被激活...好吧,等我^^