我在使用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->參數,認爲它是最有可能的罪魁禍首,但這工作得很好。我繼續用其他變量來做這件事,但每次都失敗了。
我想從你的'phpinfo()' – 2014-10-04 15:54:25
看到配置文件sendmail_from和sendmail_path你確定可以用'mail'從GoDaddy發送郵件(任何其他郵件)嗎?通常在共享主機上,您需要使用您的SMTP ... – shadyyx 2014-10-06 10:48:11
@shadyx「然而,電子郵件確實發送了。」,雖然很奇怪,即使電子郵件發送時出現錯誤消息... – 2014-10-06 11:29:35