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

时间:2016-04-23 22:50:22

标签: php email sendgrid

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

所以我发现this PHP library遗憾的是它里面有太多“东西”。我不想上传1.7 MB的PHP代码到我的服务器而不知道那里发生了什么。

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

  1. 将单个纯文本电子邮件发送给收件人的简短列表。

  2. 获得结果:成功/失败等

4 个答案:

答案 0 :(得分:4)

我使用了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;
    $mail->isHTML(true);
    if(!$mail->Send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
    exit;
  }

    $mail->ClearAddresses();
    $mail->ClearAttachments();

答案 1 :(得分:1)

这不是我原来问题的答案,但它是问题的答案,"Simple PHP class to send email"

我花了一天试图让SendGrid PHP示例为我的服务器工作。我可能是一所旧学校,但我没有使用Composer作为现有代码,而SendGrid示例在没有它的情况下也无法运行。最重要的是,我不想调整我现有的PHP代码库以使用它们的类,或者调试它们来提取工作部分。 (我有足够的头痛被Mandrill倾倒以增加更多。)

然后我在SendGrid社区论坛上发布了一个问题......并且什么也没收到。

我向他们的技术支持提交了一张票......并且什么也没收到。 (至今。)

所以我的解决方案是继续寻找。当我发现this review交易电子邮件服务时,我首先尝试了亚马逊SES(这是一个非常痛苦的设置,所以我没有用它。这里和#39;一个不错的YouTube video,它将显示设置的复杂程度。)

然后我尝试了SendInBlue,并且非常喜欢它的易用性。他们发送交易电子邮件的PHP类是just one .php文件,大小为22 KB。没有composer,没有其他依赖项。它没有给我带来任何麻烦。可传递性也很好。我能够在15分钟内建立一个开箱即用的帐户(在所有必要的验证之后等等。)对于可以从新帐户发送的电子邮件数量有一些限制,但在您联系他们之后技术支持(或建立自己,我猜)他们将采取一些。所以我的测试电子邮件能够毫无问题地到达Hotmail,Outlook,GMail服务器。它直接进入了Inbox。我甚至不需要设置SPF和DKIM记录。默认情况下,您发送的电子邮件使用SendinBlue签名。之后,在我联系他们的技术支持后,我建立了自己的SPF和DKIM记录,并收到了快速回复并附有说明。

所以我对SendinBlue的需求印象非常深刻(即少量的交易电子邮件。)即使他们的免费帐户似乎工作得非常好,然后是8美元/月。你可以解除他们的一些配额。

SendinBlue是一家法国公司,所以它可能不会受到现在在美国发生的一些法律/政治BS的影响。它们也没有SendGrid或Mandrill / Mailchimp那么大,所以它们还没有成长为一个“大脑头”。但就像那两个。所以,SendinBlue,让我们保持这种方式!

免责声明:我与上述任何服务无关。

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

你需要有SendGrid PHP助手库:
https://github.com/sendgrid/sendgrid-php
然后你应该按照GitHub页面上的说明进行操作。

修改
对不起,我错过了你提起来的。您不需要上传1.7 MB。这是几个班级