我正在我的网站上尝试将SendGrid事务电子邮件服务与PHP脚本集成。就我的目的而言,我需要做的只是能够从我网站上的"联系人"页面发送一封基于文本的电子邮件。就是这样!
所以我发现了这个PHP库,不幸的是里面有太多的"东西"。我不想在不知道那里发生了什么的情况下将 1.7 MB 的 PHP 代码上传到我的服务器。
所以我很好奇,有没有一个简单的PHP实现idk,使用sockets
连接到SendGrid服务器来执行以下操作?
-
向收件人的简短列表发送一封纯文本电子邮件。
-
得到一个结果:成功/失败等。
我使用了PHPmailer,它就像一个魅力
$mail=new PHPMailer();
$mail->IsSMTP();
$mail->Port = 587;
$mail->SMTPAuth = true;
//sendgrid
$mail->Username="apikey";
$mail->Password = $api; //api key from sendgrid
$mail->Host="smtp.sendgrid.net";
$mail->SMTPSecure = 'tls';
$mail->From = $from;
$mail->FromName = 'From name';
$mail->AddAddress($to); // Add a recipient
$mail->MsgHTML($sbody);
$mail->isHTML(true);
$mail->Body = $sbody;
$mail->Subject = $subject;
if(!$mail->Send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}
$mail->ClearAddresses();
$mail->ClearAttachments();
它不完全是我最初问题的答案,但它是问题的答案,"Simple PHP class to send email"
我花了一天多的时间试图让SendGrid PHP示例适用于我的服务器。我可能是一个老派,但我没有将Composer
用于我现有的代码,如果没有它,SendGrid 示例将无法运行。最重要的是,我不想调整我现有的PHP代码库来处理他们的类,或者调试他们的代码库来提取工作部分。(我被 Mandrill 甩了足够头疼,可以添加更多内容。
然后我在 SendGrid 社区论坛上发布了一个问题......什么也没收到。
我向他们的技术支持提交了一张票证...什么也没收到。(直到今天。
所以我的解决方案是继续寻找。就在那时,我发现了对交易电子邮件服务的评论,并首先尝试了Amazon SES(这在a%#设置中是一个很大的痛苦,所以我没有接受它。这里有一个不错的YouTube视频,它将展示设置有多复杂。
然后我尝试了SendInBlue,并完全喜欢它工作的易用性。他们发送事务性电子邮件的PHP类只是一个.php
文件,大小为22 KB。没有composer
,没有其他依赖项。它工作了,没有让我头疼。可交付性也很棒。我能够设置一个在 15 分钟内开箱即用的帐户(经过所有必要的验证等)。对于可以从新帐户发送的电子邮件数量有一些限制,但是在您联系他们的技术支持(或建立自己,我猜)之后,他们会删除其中一些。所以我的测试电子邮件能够毫无问题地到达Hotmail,Outlook,GMail服务器。它直接进入了收件箱。我甚至不需要设置SPF和DKIM记录。默认情况下,您发送的电子邮件使用SendinBlue签名。后来,在我联系他们的技术支持并收到及时的回复和说明后,我建立了自己的 SPF 和 DKIM 记录。
所以我对SendinBlue的需求印象深刻(即少量的交易电子邮件)。甚至他们的免费帐户似乎也很好用,然后以$ 8/mo的价格。 您可以取消他们的一些发送配额。
SendinBlue是一家法国公司,因此它可能不受现在美国发生的一些法律/政治BS的影响。它们也没有SendGrid或Mandrill/Mailchimp那么大,所以它们还没有像这两个那样长出"大头"。所以,SendinBlue,让我们保持这种状态!
免责声明:我不隶属于我上面提到的任何服务。
PHPMailer 也可以很好地与 Sendgrid Web 服务配合使用 - @bob_1982 的例子是正确的。但是,如果您使用的是 PHP 5.6+ 版本,则可能会出现问题。由于此版本的PHP流设置SSL peer verify
从默认FALSE
更改为默认TRUE
,这尤其会导致Sendgrid错误Failed verifying SSL certificate
。以下PHPMailer SMTP流设置应该可以解决此问题:
$phpMailer->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
],
];
但是,出于安全性考虑,绝对不建议禁用对等验证,服务提供商应解决此问题,而不是应用此类解决方法。另请参阅与 SwiftMailer 相关的问题 - https://github.com/swiftmailer/swiftmailer/issues/544。
你需要有SendGrid PHP帮助程序库:
https://github.com/sendgrid/sendgrid-php然后,您应该按照 GitHub 页面上的说明进行操作。
编辑
对不起,我错过了你提出的。您无需上传 1.7 MB。这是几个类