我有一个注册表,完成后它发送电子邮件验证。问题是,它适用于Outlook和Yahoo,但它不适用于Gmail。我一直在调整标题试图解决这个问题。我甚至在这里找到了另一个帖子,这正是我的问题PHP mail() works for Yahoo but not for Gmail,我试过他们在答案中说的话,我的邮件仍然不会发送到Gmail。我本来想在这个问题上发表评论的,但它已经6岁了。以下是我使用的两种方法。一个是默认的头,一个是发送邮件:
public function sendActivationEmail() : bool {
return mail($this->to,$this->subject,$this->getMessage(),$this->getHeaders());
}
protected function getDefaultHeaders() : string {
// To send HTML mail, the Content-type header must be set
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: info@abc.com\r\n";
$headers .= "Reply-To: info@abc.com\r\n";
$headers .= "Cc: Client Tracker New User <farrier.clienttracker@gmail.com>\r\n";
$headers .= "X-Sender: Client Tracker <farrier.clienttracker@gmail.com>\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion()."\r\n";
$headers .= "X-Priority: 1\n"; // Urgent message!
$headers .= "Return-Path: farrier.clienttracker@gmail.com\r\n"; // Return path for errors
return $headers;
}
我对这件事束手无策。我不打算得到一个专用的邮件服务器,我不知道如何做任何的SMTP的东西。我确实联系了我的托管服务器,他们对SPF做了一些更改,但这只使它,所以邮件去雅虎和Outlook,但没有Gmail。
2条答案
按热度按时间nwlls2ji1#
问题出在我的主机服务器上。他们必须确定我的域名和IP是否被允许。现在,在电子邮件的标题信息中,SPF=通过和DKIM=通过。所以现在所有的邮件都通过了。
ee7vknir2#
引用自Google Help Center:
从2022年11月开始,向个人Gmail帐户 * 发送电子邮件的新发件人必须设置SPF或DKIM*。谷歌会对个人Gmail帐户的新发件人邮件进行随机检查,以验证它们是否经过身份验证。没有这些身份验证方法中至少一种的邮件将被拒绝或标记为垃圾邮件。如果您是现有发件人,则此要求不适用于您。但是,我们建议您始终设置SPF和DKIM,以保护您组织的电子邮件并支持未来的身份验证要求。
因此,需要设置SPF或DKIM中的至少一个。SPF可以通过在DNS中添加TXT记录来设置,如Define your SPF record中所述。但是,DKIM需要在您的邮件服务器中设置,因此如果您的邮件提供商还不支持DKIM,SPF是唯一的解决方案。