如何修复OpenCart中mail()错误的坏参数


How to fix bad parameters to mail() error in OpenCart?

我在使用OpenCart时遇到了一个问题,当使用借记卡/信用卡在PayPal Pro结账时按下"确认订单"时,"请等待"消息会出现,然后消失,而不会进入确认页面。电子邮件被发送给客户和所有者,钱被支付,但要到达确认页面,你必须再次按下"确认订单"。这会再次将钱发送到PayPal,但不会发送额外的电子邮件,第二个订单也不会出现在OpenCart记录中。

第一次点击时,会生成三次以下错误消息:

PHP Warning:  mail() [<a href='function.mail'>function.mail</a>]: Bad parameters to mail() function, mail not sent. in /.../store/system/library/mail.php on line 148

然而,电子邮件确实被发送了。第二次单击时,不会生成任何错误。

我已经检查了电子邮件设置,它们似乎都是正确的(我在"邮件参数"框中尝试了info@domain.com-finfo@domain.com),但没有任何变化。我使用的是邮件选项,而不是SMTP。

主持人是GoDaddy,我知道这在电子邮件中有时有点有趣。我试着在PHP中完成代码,但我找不到参数变量的实际设置位置,我认为它是从OpenCart管理中的设置中获得的。

我试着从mail.php中的mail()函数中删除parameters选项,第一次点击就可以结账,但邮件根本没有发送,所以我很确定修复这个错误会解决结账问题,我只是不确定下一步该怎么做。

编辑:

我一直在试验发送电子邮件的线路。OpenCart最初将其设置为:

mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header, $this->parameter);

为了确保邮件实际上是这样工作的,我把它改为:

mail('myaddress@email.com', 'Test', 'Hello', 'From: info@domain.com', '-finfo@domain.com');

奏效了。我点击了"确认订单",它就像预期的那样工作。然后我尝试了各种组合,删除变量并用测试中的详细信息替换它们。首先,我在$this->参数中添加了它,认为它是最有可能的罪魁祸首,但效果很好。我对其他变量继续这样做,但每次都失败了。

店主为订单添加了一些额外的电子邮件地址。这些电子邮件地址的格式应该是address1@email.com,address2.email.com等。

相反,逗号后面有一个空格,这完全是抛出OpenCart。可能应该在OpenCart中添加一些修复程序来忽略电子邮件字段中的空格,但目前,一切都正常。