Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cpanel主机上的PHP Mail()函数将发送垃圾邮件_Php_Email_Phpmailer_Cpanel - Fatal编程技术网

Cpanel主机上的PHP Mail()函数将发送垃圾邮件

Cpanel主机上的PHP Mail()函数将发送垃圾邮件,php,email,phpmailer,cpanel,Php,Email,Phpmailer,Cpanel,从托管在Cpanel帐户上的PHP mail()函数发送的电子邮件经常以垃圾邮件结束(所有时间用于@outlook.com,有些时间用于@gmail.com) 我已经确定这不是由于消息的内容,而是由于标题中的某些内容。我的最佳猜测是,要么是因为有一个标题字段指示电子邮件是由PHP脚本发送的,要么是因为无论您是否将From:Reply To:和Return Path:设置为相同的电子邮件地址,SMTP服务器始终显示电子邮件是从{cpanel account username}发送的@servern

从托管在Cpanel帐户上的PHP mail()函数发送的电子邮件经常以垃圾邮件结束(所有时间用于@outlook.com,有些时间用于@gmail.com)

我已经确定这不是由于消息的内容,而是由于标题中的某些内容。我的最佳猜测是,要么是因为有一个标题字段指示电子邮件是由PHP脚本发送的,要么是因为无论您是否将From:Reply To:和Return Path:设置为相同的电子邮件地址,SMTP服务器始终显示电子邮件是从{cpanel account username}发送的@servername.serverdomain.com,该地址与“发件人/答复收件人”地址不匹配,它似乎覆盖了我对{cpanel account username}@servername.serverdomain.com使用的任何返回路径地址

正如您所知,Web应用程序可以代表用户发送电子邮件,而该用户的电子邮件地址与应用程序运行所在的域不在同一个域中。因此,服务器可能是serverdomain.com,用户的电子邮件可能是something@someotherdomain.com

通过检查测试脚本的标题或从发送的电子邮件,SMTP服务器始终显示电子邮件是从cpanel帐户发送的-username@server1.serverdomain.com通过Gmail后的部分标题显示:

Return-Path: <cpanel-account-username@server1.serverdomain.com>
Received: from server1.serverdomain.com (server1.serverdomain.com. [XXX.XXX.XXX.XXX])
    by mx.google.com with ESMTPS id w7si15164878pgi.491.2020.09.22.16.51.14
    for <testto@gmail.com>
    (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
    Tue, 22 Sep 2020 16:51:14 -0700 (PDT)
Received-SPF: pass (google.com: domain of cpanel-account-username@server1.serverdomain.com designates XXX.XXX.XXX.XXX as permitted sender) client-ip=XXX.XXX.XXX.XXX;
Authentication-Results: mx.google.com;
   spf=pass (google.com: domain of cpanel-account-username@server1.serverdomain.com designates XXX.XXX.XXX.XXX as permitted sender) smtp.mailfrom=cpanel-account-username@server1.serverdomain.com
Received: from cpanel-account-username by server1.serverdomain.com with local (Exim 4.93) (envelope-from <cpanel-account-username@server1.serverdomain.com>) id 1kKs41-00014X-4u for test@gmail.com; Tue, 22 Sep 2020 16:51:13 -0700
To: testto@gmail.com
Subject: Something
X-PHP-Script: suitecpanelhostdomain.com/cms/index.php for XXX.XXX.XXX.XXX
X-PHP-Originating-Script: 1006:test_script.php
From: From Name <something@someotherdomain.com>
Reply-To: something@someotherdomain.com
MIME-Version: 1.0
Content-Type: text/html; charset=ISO-8859-1
X-Priority: 3
X-Mailer: PHP7.3.22
返回路径:
接收:从server1.serverdomain.com(server1.serverdomain.com.[XXX.XXX.XXX.XXX])
由mx.google.com提供,ESMTPS id为w7si15164878pgi.491.2020.09.22.16.51.14
对于
(版本=TLS1_2密码=ECDHE-ECDSA-AES128-GCM-SHA256位=128/128);
2020年9月22日星期二16:51:14-0700(太平洋时间)
收到SPF:pass(google.com:cpanel帐户的域-username@server1.serverdomain.com指定XXX.XXX.XXX.XXX为允许的发送方)客户端ip=XXX.XXX.XXX.XXX;
认证结果:mx.google.com;
spf=pass(google.com:cpanel帐户的域-username@server1.serverdomain.com将XXX.XXX.XXX.XXX指定为允许的发件人)smtp.mailfrom=cpanel帐户-username@server1.serverdomain.com
已收到:来自cpanel帐户,用户名为server1.serverdomain.com,本地(Exim 4.93)(信封发件人)id为1kKs41-00014X-4u,用于test@gmail.com; 2020年9月22日星期二16:51:13-0700
致:testto@gmail.com
主题:什么
X-PHP-Script:suitecpanelhostdomain.com/cms/index.PHP for XXX.XXX.XXX.XXX
X-PHP-origing-Script:1006:test_Script.PHP
From:From Name
答复:something@someotherdomain.com
MIME版本:1.0
内容类型:text/html;字符集=ISO-8859-1
X优先级:3
X-Mailer:PHP7.3.22
如果我能够更改标题,使其认为电子邮件是从something@someotherdomain.com而不是cpanel帐户-username@server1.serverdomain.com我认为这不起作用,因为server1.serverdomain.com的IP地址与someotherdomain.com的MX或SPF记录不匹配,因为cpanel帐户的域不匹配处理该应用程序用户的电子邮件地址的域的电子邮件


一些在CPanel上运行PHP(或使用PHP mail())的程序员以前肯定遇到过这种情况,他们想知道是否有人找到了解决方案?我是否应该切换到PhpMailer以更好地控制邮件标题?如果是,我应该更改什么?

X-PHP-Script和X-PHP-origing-Script在默认情况下会附加到电子邮件上,如果您启动PHP邮件功能-许多人都使用它向Gmail和Hotmail发送电子邮件,因此我怀疑它与邮件标题无关

垃圾邮件过滤既是一门艺术也是一门科学。通常,一封电子邮件以0分开始,经过100秒的测试,最后打分,如果达到阈值,则放入垃圾邮件文件夹

有时这不在你的控制范围之内

如果它是一个共享托管服务器,其上有100个甚至1000个站点,那么服务器上的另一个站点可能会被破坏,发送垃圾邮件,服务器IP可能会被列入已知的黑名单

您可以使用MX工具箱检查以下内容:

Gmail和Hotmail等公共服务提供商也有自己的内部黑名单——他们将确定自己的用户是否报告来自特定IP的垃圾邮件,并采取适当措施全面保护用户

也可能是因为反向DNS。server1.serverdomain.com解析为XXX.XXX.XXX.XXX,但XXX.XXX.XXX是否解析为server1.serverdomain.com

如果没有,当垃圾邮件过滤器对电子邮件进行评分时,这可能会增加负面分数

MX工具箱也可以在这里提供帮助:

此外,有时如果发件人域(server1.serverdomain.com)未同时指定A记录和MX记录,则会导致垃圾邮件过滤器向电子邮件添加分数。在某些情况下,共享主机使用A记录设置服务器,但不使用MX记录

我会对上述3个选项进行检查,如果有失败,请转到您的主机提供商,让他们查看。我是按严重程度写的

SPF正在传递此实例,因此看起来不存在问题

正如您所知,Web应用程序可以代表用户发送电子邮件,而该用户的电子邮件地址与应用程序运行所在的域不在同一个域中。因此,服务器可能是serverdomain.com,用户的电子邮件可能是something@someotherdomain.com

你可以试着这样做,但一般来说这是行不通的,你不应该尝试。这是伪造的,只会导致你被列入黑名单或被阻止。别这样

许多服务只允许您从您的帐户地址发送,而忽略任何其他地址。Gmail允许您预先配置其他别名,但您不能从任意地址发送,主要是因为它通常是伪造的

使用最严格的设置实现SPF、DKIM(最好在本地邮件服务器中而不是在PHP中)和DMARC,确保反向IP与转发名称匹配。对信封发送者使用VERP地址,以便您可以识别行为不当引起的反弹