如何修复OpenCart中的邮件错误()错误?

问题描述:

我在使用OpenCart时遇到问题,当使用借记卡/信用卡与PayPal Pro结帐时按'确认订单'时,显示'请稍候'消息,然后消失,没有进展到确认页面。电子邮件会发送给客户和所有者,钱已付款,但要到确认页面,您必须再次按“确认订单”。这会再次将资金发送到PayPal,但不会发送额外的电子邮件,并且第二个订单不会出现在OpenCart记录中。如何修复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 

然而,电子邮件在实际上会发送。在第二次点击时,不会产生错误。

我检查过电子邮件设置,他们似乎都是正确的(我已经在邮件参数框中尝试了[email protected][email protected])并且没有任何更改。我正在使用邮件选项而不是SMTP。

主人是GoDaddy,我知道有时候会对电子邮件有些有趣。我试着在PHP中通过下面的代码,但我无法找到参数变量实际上设置的地方,我认为它可以从OpenCart管理员的设置中获得。

我试着从mail.php中的mail()函数中删除参数选项,并且第一次点击的结帐工作,但邮件根本没有发送,所以我很确定修复错误将修复结帐问题,我只是不确定接下来要尝试什么。

编辑:

我一直在做一些试验,发送电子邮件的行。 Opencart的原本已经将其设置为:

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

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

mail('[email protected]', 'Test', 'Hello', 'From: [email protected]', '[email protected]'); 

这工作。我点击了'确认订单',它按照它应有的方式工作。然后我尝试了各种删除变量的组合,并用我的测试中的细节替换它们。首先我加回$ this->参数,认为它是最有可能的罪魁祸首,但这工作得很好。我继续用其他变量来做这件事,但每次都失败了。

+0

我想从你的'phpinfo()' – 2014-10-04 15:54:25

+0

看到配置文件sendmail_from和sendmail_path你确定可以用'mail'从GoDaddy发送邮件(任何其他邮件)吗?通常在共享主机上,您需要使用您的SMTP ... – shadyyx 2014-10-06 10:48:11

+0

@shadyx“然而,电子邮件确实发送了。”,虽然很奇怪,即使电子邮件发送时出现错误消息... – 2014-10-06 11:29:35

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

取而代之的是,逗号后有一个空格,并且这完全抛出OpenCart。 OpenCart应该可能会添加某种修补程序来忽略电子邮件字段中的空格,但现在它已全部正常工作。