PHP Mail()/ PHPMailer与事务性电子邮件服务与SMTP

时间:2018-05-23 10:19:40

标签: php email phpmailer

我的网络客户端提出的一个常见且相当不可预测的问题是收到从他们的网站发送的电子邮件,而不会被电子邮件垃圾邮件阻止程序占用。我发现最可靠的解决方案是使用SMTP凭据通过客户端的电子邮件服务器发送电子邮件。但是,如果客户端使用Office 365,但由于Office 365电子邮件端口被阻止,则将其网站托管在Google Cloud / Compute Engine上,这不起作用。那么我剩下2个选项:交易电子邮件中继(如Mailgun或Sendgrid)或PHP电子邮件工具(PHPMailer或mail())。

前者非常可靠,但要求客户设置帐户,支付订阅费并创建新的SPF记录。后者的设置和优点/缺点对我来说不太清楚,但似乎更容易。 PHP开发人员似乎更喜欢使用mail()而不是PHPMailer,但我从来没有找到这个首选项的完整原因列表(如果你没有使用PHPMailer通过SMTP / IMAP发送邮件)。在PHPMailer或任何其他PHP电子邮件库上使用mail()有什么优缺点?

我也从未完全理解可靠地使用其中一种工具所需的设置。如果您使用mail()/ PHPMailer,是否必须创建SPF记录?如果是这样,您如何计算发送电子邮件的服务器的域名或IP地址,以便您可以创建SPF记录(例如,WP引擎没有创建SPF记录的说明)?

2 个答案:

答案 0 :(得分:2)

mail和PHPMailer都是创建邮件和“将其丢弃”的解决方案。 mail是系统sendmail或兼容替代configured in php.ini的低级别骨干API。使用mail您必须完全正确地获取邮件格式,您基本上将原始电子邮件标题和正文传递给mail(),并将其传递给sendmail兼容{{3}在系统上设置,它将尝试根据其配置提供它。

PHPMailer只是一个包装器,它可以减轻您对电子邮件标题/正文格式的担忧,并添加直接与SMTP服务器通信的功能,而不需要设置本地MTA。

从根本上说,这两种解决方案都不会为您提供垃圾邮件。垃圾邮件过滤器会查看发送服务器和域/ DNS配置(除了邮件内容本身),这两者都不受mail / PHPMailer使用的影响。您仍然需要正确设置MTA /域/ DNS记录,以使最终发送电子邮件的服务器合法化。

答案 1 :(得分:0)

你可能会更好地使用其中一个ESP。否则,你必须担心IP地址,黑名单,垃圾邮件,发送时间表以及ESP为你做的许多其他事情。

如果您每月发送少于150,000封电子邮件,您仍然可以通过弹性电子邮件免费发送。