2014-10-04 42 views
3

我在使用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

回答

2

店主爲訂單添加了一些額外的電子郵件地址。這些電子郵件地址的格式應該是[email protected],address2.email.com等。

取而代之的是,逗號後有一個空格,並且這完全拋出OpenCart。 OpenCart應該可能會添加某種修補程序來忽略電子郵件字段中的空格,但現在它已全部正常工作。