我正在尝试将SendGrid交易电子邮件服务与我的网站上的PHP脚本集成。出于我的目的,我需要做的就是能够从我网站上的“联系”页面发送一封基于文本的电子邮件。就是这样!
所以我发现this PHP library遗憾的是它里面有太多“东西”。我不想上传1.7 MB的PHP代码到我的服务器而不知道那里发生了什么。
所以我很好奇,是否有一个简单的PHP实现,idk,使用sockets
连接到SendGrid服务器来执行以下操作?
将单个纯文本电子邮件发送给收件人的简短列表。
获得结果:成功/失败等
答案 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。这是几个班级