外部托管电子邮件并使用 PHP 发送电子邮件

Externally hosted email and using PHP to send email

我将使用 G Suite(正式名称为 Google 应用程序)来托管独立主机运行的网站的电子邮件。

然而,网站上有一个联系表格,我还没有看过,但我认为它会使用标准的 mail() 功能。

据我了解 mail() 仍将使用 servers 邮件服务器发送邮件,这可能是一个愚蠢的问题,但我认为这不会因此导致任何垃圾邮件检测问题?比如,我知道如果 From and/or Sender headers 与它来自的服务器(或者在某些情况下,如果您在这些 headers 中设置的电子邮件不存在)。

因此,如果邮件托管在 G Suite 上, From/Sender 中设置的电子邮件地址headers G Suite 上存在这不会导致任何问题,对吗?

最后,我知道使用 SMTP 通过 Google 发送邮件可能是一个更好的主意,但我可能没有那个选择,所以我想找出上述问题的答案 in-case.

编辑:按照尼玛的answer,这是可以避免的,还是只能使用Google的SMTP服务器发送?

当您使用 GSUITE 托管电子邮件时,很明显您将向 GSUITE 提供一些域名。

现在电子邮件被标记为垃圾邮件和非垃圾邮件基于内容以及发送服务器和发送服务器的证书为交易和营销导向的电子邮件提供不同的服务。而 GSUITE 只提供交易邮件服务,来自邮件服务的交易邮件——具有有效证书且未列入黑名单——直接进入收件箱或其他标签,但 Spam/Promotion.

现在 GSUITE 拥有所有正确的证书,我认为没有任何面向消费者的邮件服务提供商会阻止来自 google 服务器的电子邮件。

其他问题:- E-MAIL header 中的 From Address 重要吗? 到目前为止,我从未见过 from address 对接收服务器有任何影响,但一些消费者邮件服务会阻止使用除帐户电子邮件地址以外的 from 地址,就像移动运营商不允许我们使用其他人的来电显示(理想情况下)一样。 但是企业的邮件服务提供商允许您使用任何地址作为 e-mail header 中的 from 值。

编辑:- 如果您仍然不确定电子邮件是否送达,您可以使用 replyTo header 没有任何问题。

PS:- 我自己用数千封电子邮件测试了这个,但使用的是 SendGrid 服务器。

http://php.net/manual/en/function.mail.php

The Windows implementation of mail() differs in many ways from the Unix implementation. First, it doesn't use a local binary for composing messages but only operates on direct sockets which means a MTA is needed listening on a network socket (which can either on the localhost or a remote machine).

在 linux 上,sendmail 可执行文件用于与在 windows 上配置的 SMTP 服务器通信,您可以/可以配置 mail() 功能以使用 SMTP

所以最好的办法就是直接使用SMTP发送邮件到Gmail发送邮件。

取自:

Here is a way to do it with PHP PEAR

// Pear Mail Library
require_once "Mail.php";

$from = '<your@mail.com>'; //change this to your email address
$to = '<someone@mail.com>'; // change to address
$subject = 'Insert subject here'; // subject of mail
$body = "Hello world! this is the content of the email"; //content of mail

$headers = array(
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
);

$smtp = Mail::factory('smtp', array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => '465',
        'auth' => true,
        'username' => 'your@gmail.com', //your gmail account
        'password' => 'snip' // your password
    ));

// Send the mail
$mail = $smtp->send($to, $headers, $body);

If you use gmail smtp remember to enable SMTP in you gmail account, under settings

在 Linux 服务器上,您不能通过邮件功能使用 SMTP。

想要简单就用SMTP.

由于垃圾邮件,多个邮件服务器提供商正在阻止来自未正确配置 RDNS (Reverse DNS) 和 MTA 名称的邮件服务器的邮件。

您要确保所有三个名称都与您的 MX 记录匹配:

  • 发件人主机名(例如 *mail@demohost.com、note that from can be what ever you want
  • MTA-Name/HELO-Hostname(在邮件服务器中配置,例如demohost.com)
  • RDNS(基本上它为每个 IP 地址提供主机名(例如 42.42.42.42 -> demohost.com)

还要确保您的 php.ini 具有正确的邮件服务器配置。恭喜,您现在可以使用 mail(...).

发送邮件

正如我所说,使用 SMTP 可能是最简单的方法。将艰苦的工作分配给托管人。