2013-01-13 96 views
2

據我所知,我的郵件設置配置正確,但我沒有收到任何電子郵件,不通過聯繫表單,也沒有收到新客戶或任何訂單擺放在。OpenCart - 不發送電子郵件(通知或聯繫頁面)

這裏是我的當前設置:

enter image description here

我已經試過:

  1. 更改爲SMTP,我得到一個錯誤,我的主機(IXWebHosting的)說我 需要禁用應用程序內的授權,我不能 看到這個選項

  2. 添加-f和-F電子郵件之前爲suggested here

  3. 添加不同的電子郵件給「也發送到」框的 底部的郵件頁面

  4. 手工定義「發件人」頭中的代碼suggested here

  5. 試過@ gmail.com,@ googlemail.com和@ arabel.co.uk

不幸的是我還沒有收到任何電子郵件來自OpenCart的郵件。我已經聯繫了我的主機並運行了測試腳本 - 郵件功能或服務器上的設置沒有問題,並且我剛剛從OpenCart下載了最新版本的mail.php(雖然這是六個月的時間,我用反正一個)

感謝

UPDATE:

它看起來像BASE64_ENCODE不工作,因爲這個代碼:

echo $header = 'From: ' . '=?UTF-8?B?' . base64_encode($this->sender) . '?=' . '<' . $this->from . '>' . $this->newline; 
die(); 

產出此:

來自:???= UTF-8乙Tmljaw == =

+0

您確定已經檢查過html頁面的源代碼嗎?因爲<...>部分不會顯示在瀏覽器中,因爲它被視爲標籤。這就是爲什麼它只顯示「From:=?UTF-8?B?Tmljaw ==?=」。但是在HTML源代碼中,電子郵件部分應該在<...> – Taras

+0

之間顯示base64_encode的效果很好。你的意見是「尼克」。此外,您的瀏覽器只是隱藏<>的東西,因爲它在一個標籤... –

回答

8

不能完全確定爲什麼底座64編碼是有要誠實?。打開system/library/mail.php和改變這一行

echo $header .= 'From: ' . '=?UTF-8?B?' . base64_encode($this->sender) . '?=' . '<' . $this->from . '>' . $this->newline; 

$header .= 'From: ' . $this->sender . ' <' . $this->from . '>' . $this->newline; 
+0

+1此外,似乎'回覆'標題(在「發件人」之後的下一行)遭受同樣的問題。將它修改爲:'$ header。='Reply-To:'。 $ this->發件人。 '<' . $this->自。 '>'。 $ this-> newline;'它似乎工作正常。然而,'php.ini'中使用的郵件主機必須必須採取措施解決此問題,因爲電子郵件通知在我突然停止工作之前可以正常工作 –

3

我有非常大的挫折與..

的問題是真正與服務器...如果你使用郵件選項,比你必須在本地主機上設置郵件服務器。 但問題是如果你的ISP支持25端口的SMTP。如果沒有,比你有問題。

第二個選擇是使用gmail smtp或hotmail smtp。 我嘗試過,悲慘地失敗了..我不知道爲什麼gmail不適合我,但我搜索了整個互聯網,發現人們隨意地遇到了gmail問題。

我正在尋找,試圖最後一招..從我的ISP的SMTP。我用我的ISP的smtp和SMTP上設置選項,發現東西的作品。

我打電話給我的ISP,他們不知道爲什麼Gmail沒有工作,但他們對我說,他們關閉了25端口,以防止垃圾郵件發送者與您的用戶名發送郵件。

TL,DR: 嘗試你自己的ISP的SMTP如果你是在本地主機上的工作,如果不是你問你的託管服務提供商來解決你的東西:)

PS:您不能禁用授權。最初版本的opencart沒有授權,這很有趣,爲什麼他們沒有添加選項來選擇是否使用授權。

如果你知道編碼,你可以在opencart中編輯郵件類,如果沒有,你唯一的解決方案就是使用你的ISP smtp或者移動到託管郵件服務器設置了smtp授權(這不是很難設置即使你目前的託管)。

3

嘗試在您網站的設置菜單中添加多個電子郵件地址。 (網站管理)。

它在OpenCart版本1.5.5.3中爲我們工作。

enter image description here

+0

前往......幫助我的客戶之一好。可能是因爲Theres與第一個電子郵件帳戶的配置問題,但你的提示讓我們失去了信心。謝謝 ;) –

2

我想盡修復可能,位沒有工作對我來說(我託管在Site5,在Webfaction它的工作)。 我結束了使用SwiftMailer我安裝的系統/庫/ swiftmailer目錄重寫的send()功能在系統/庫/ mail.php文件。 我的代碼不完整,因爲它假定驗證總是必要的,但這應該是一個簡單的修復。

public function send() { 
    require_once(DIR_SYSTEM . 'library/swiftmailer/swift_required.php'); 

    if (!$this->to) { 
     trigger_error('Error: E-Mail to required!'); 
     exit();   
    } 

    if (!$this->from) { 
     trigger_error('Error: E-Mail from required!'); 
     exit();     
    } 

    if (!$this->sender) { 
     trigger_error('Error: E-Mail sender required!'); 
     exit();     
    } 

    if (!$this->subject) { 
     trigger_error('Error: E-Mail subject required!'); 
     exit();     
    } 

    if ((!$this->text) && (!$this->html)) { 
     trigger_error('Error: E-Mail message required!'); 
     exit();     
    } 

    if (is_array($this->to)) { 
     $to = implode(',', $this->to); 
    } else { 
     $to = $this->to; 
    } 

    $message = Swift_Message::newInstance() 
     ->setSubject($this->subject) 
     ->setFrom(array($this->from => $this->sender)) 
     ->setTo(array($to)) 
     ->setBody($this->text); 

    if($this->html){ 
     $message->addPart($this->html, 'text/html'); 
    } 

    foreach ($this->attachments as $attachment) { 
     if (file_exists($attachment)) { 
      $message->attach(Swift_Attachment::fromPath($attachment)); 
     } 
    } 

    $transport = Swift_SmtpTransport::newInstance('localhost', 25) 
    ->setUsername($this->username) 
    ->setPassword($this->password); 

    $mailer = Swift_Mailer::newInstance($transport); 
    $mailer->send($message); 
} 
1

對我來說,解決辦法是,郵件無法通過我的服務器,當他們有一個域發送「從」,這是不一樣的主機。

這是清楚,因爲當我在聯繫表格填寫[email protected],它的工作原理,並定期電子郵件沒有到達。

爲了迫使郵件從我自己的主機,而不是填補了電子郵件地址,我編輯的接觸控制器發送。

請不要繼續這個話題,如果你不知道如何編輯源代碼,我要離開了一些簡單的步驟。如果你不知道這些步驟,不要問,但要求專業人士看看這個。 (只是爲了保護你自己)

文件:catalog/controller/information/contact.php

性能指標,對我來說第21行:

ORIGINAL:

$mail->setFrom($this->request->post['email']); 

新:

$mail->setFrom($this->config->get('config_email')); 
$mail->setReplyTo($this->request->post['email']); 

這爲我解決它。

相關問題