简单的PHP类,通过SendGrid服务发送电子邮件


Simple PHP class to send email via SendGrid service

我正在我的网站上尝试将SendGrid事务电子邮件服务与PHP脚本集成。就我的目的而言,我需要做的只是能够从我网站上的"联系人"页面发送一封基于文本的电子邮件。就是这样!

所以我发现了这个PHP库,不幸的是里面有太多的"东西"。我不想在不知道那里发生了什么的情况下将 1.7 MB 的 PHP 代码上传到我的服务器。

所以我很好奇,有没有一个简单的PHP实现idk,使用sockets连接到SendGrid服务器来执行以下操作?

  1. 向收件人的简短列表发送一封纯文本电子邮件。

  2. 得到一个结果:成功/失败等。

我使用了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。这是几个类