我在尝试使用 swiftmailer 和 sendgrid smtp 发送电子邮件时收到此错误
致命错误:*未捕获异常“Swift_TransportException”,消息“预期响应代码 250,但收到代码“”,消息“””*
这是我的代码:
$hdr = new SmtpApiHeader();
// Set all of the above variables
$hdr->addTo($toList);
$hdr->addSubVal('-name-', $nameList);
$hdr->addSubVal('-time-', $timeList);
// Specify that this is an initial contact message
$hdr->setCategory("initial");
// The subject of your email
$subject = 'Example SendGrid Email';
// Where is this message coming from. For example, this message can be from
// [email protected] /cdn-cgi/l/email-protection, [email protected] /cdn-cgi/l/email-protection
$from = array('[email protected] /cdn-cgi/l/email-protection' => 'Mupiz');
$to = array('[email protected] /cdn-cgi/l/email-protection'=>'AN',"[email protected] /cdn-cgi/l/email-protection"=>"AN2s");
$text="Hello -name-
Thank you for your interest in our products. We have set up an appointment
to call you at -time- EST to discuss your needs in more detail.
Regards,
Fred, How are you?
";
$html = "
<html>
<head></head>
<body>
<p>Hello -name-,<br>
Thank you for your interest in our products. We have set up an appointment
to call you at -time- EST to discuss your needs in more detail.
Regards,
Fred, How are you?<br>
</p>
</body>
</html>
";
// Your SendGrid account credentials
$username = 'XXXX';
$password = 'XXXX';
// Create new swift connection and authenticate
$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);
// add SMTPAPI header to the message
// *****IMPORTANT NOTE*****
// SendGrid's asJSON function escapes characters. If you are using Swift Mailer's
// PHP Mailer functions, the getTextHeader function will also escape characters.
// This can cause the filter to be dropped.
$headers = $message->getHeaders();
$headers->addTextHeader('X-SMTPAPI', $hdr->asJSON());
// 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
// If we specify the names in the X-SMTPAPI header, then this will always be 1.
echo 'Message sent out to '.$recipients.' users';
}
// something went wrong =(
else
{
echo "Something went wrong - ";
print_r($failures);
}
一个主意 ?
Thanks
造成这种情况的原因可能有很多。最有可能的情况是您的服务器已关闭与外部主机的连接。其他可能性是您使用的是旧版本的 PHP,该版本存在 openSSL 错误,或者您的速率受到某些限制。
您应该查看此问题以了解有关外部主机问题的详细信息:通过 sendgrid 发送邮件 https://stackoverflow.com/questions/8725365/send-mails-via-sendgrid
另外,如果您想使用 SendGrid 发送电子邮件,则应该使用 SendGrid PHP 库。它解决了 Swift 和一般发送方面的一系列细微差别。此外,如果您因任何原因无法使用 SMTP,它还可以让您访问 HTTP API。
https://github.com/sendgrid/sendgrid-php https://github.com/sendgrid/sendgrid-php
全面披露:我是 SendGrid 的开发人员传播者,并且时常参与 PHP 库的工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)