2012-12-11 85 views
29

我正在編輯一些包含在Magento交易電子郵件中的phtml文件,但爲了測試更改,我必須實際發送電子郵件。在(例如)訂單確認電子郵件的情況下,這意味着每次我想測試電子郵件時都必須下訂單!Magento:預覽/測試交易電子郵件與實際數據,而不實際發送它們?

在後端選擇「預覽電子郵件」沒有幫助的,因爲電子郵件中沒有包含可見訂單數據。

有沒有辦法來預覽事務的電子郵件,但它已經與訂單數據呈現?

+0

你能硬編碼它發送電子郵件給你嗎? –

+0

作爲「預覽電子郵件」功能的一部分,您的意思是?可能,雖然我不知道如何。而且我不知道在發送任何數據之前我會如何向它發送訂單數據。 – WackGet

+10

爲這種情況創建開發環境總是一個好主意。您也不必創建新的訂單,您可以重新發送以前的訂單電子郵件(通過轉到該訂單並單擊重新發送電子郵件) –

回答

29

從用戶R,S:

你不必創建一個新的訂單,你可以重新發送一個以前的訂單的電子郵件(通過轉到訂單,然後點擊重新發送電子郵件)。

這是我發現在模板附近快速重新測試電子郵件時發現的最接近的東西。謝謝R.S!

+0

太棒了,謝謝。任何縮短反饋循環的方法! –

+1

如果新訂單電子郵件已發送,則可能不會再發送。檢查'Mage_Sales_Model_Order :: sendNewOrderEmail()'是否有一個'if($ this-> getEmailSent()){return $ this; ''測試。如果是這樣,請暫時對此發表評論。 –

+0

這是一個很好的小技巧,有助於節省時間。 – codestr

5

請按照此博客中的說明:Magento (L)ocalhost (E)mail (S)erver (S)imulator (Nov 2010; by Branko Ajzele) Magento將保存html電子郵件,包括您試圖發送的所有變量var/log

+0

這太好了,一定會有用的。謝謝。唯一不行的是擺脫我繼續下訂單的需要。然而,使用上面提到的關於「重發電子郵件」的R.S的技巧,這很容易。 – WackGet

+0

的確如此。繼續重新發送相同的訂單以調整您的交易電子郵件。 –

2

我們實際上已經開發的擴展,它可以讓你做到這一點:從測試Magento的後端內發送的任何交易Magento的電子郵件。希望它不是太商業化,在這裏提及︰ http://www.yireo.com/software/magento-extensions/emailtester

+2

StackOverflow不是發佈指向付費擴展程序的鏈接的地方,尤其是當您的答案僅僅是沒有幫助詞的鏈接時。 – swl1020

+2

和這個好友只是提出一個解決方案,我不認爲任何SO規則在這裏被侵犯...... –

+0

那麼答案*是*促銷。但我所能做的就是留下一個「促銷」的評論,因爲我在工作中使用這個擴展,它做的工作,是一個很好的。 – hakre

3

我們開發了一個免費的開源擴展名爲Hackathon_EmailPreview

關於訂單的郵件,你可以在瀏覽器中預覽他們沒有發送,您可以輸入任何訂單號查詢不同的順序將是什麼樣子。

+1

「如何使用」您的分機沒有任何幫助。您應該將其添加到您的文檔,因爲只有安裝說明。 – RPDeshaies

+1

的確如此。感謝您的意見。 –

+0

嗨,我已經在Magento 1.9上測試過你的模塊,它不工作。點擊預覽按鈕後,我們得到一個錯誤,像「電話支付實例」,我不記得確切,但它不適用於1.9版本。 – joaogdesigner

11

下面的代碼片段將呈現「新限購令」的電子郵件,並顯示它的任何給定的順序。把下面的/test.php例如,只是瀏覽至適當的位置就像http://www.example.com/test.php

require_once 'app/Mage.php'; 
Mage::app(); 

// loads the proper email template 
$emailTemplate = Mage::getModel('core/email_template') 
         ->loadDefault('sales_email_order_template'); 

// All variables your error log tells you that are missing can be placed like this: 

$emailTemplateVars = array(); 
$emailTemplateVars['usermessage'] = "blub"; 
$emailTemplateVars['store'] = Mage::app()->getStore(); 
$emailTemplateVars['sendername'] = 'sender name'; 
$emailTemplateVars['receivername'] = 'receiver name'; 

// order you want to load by ID 

$emailTemplateVars['order'] = Mage::getModel('sales/order')->load(673); 

// load payment details: 
// usually rendered by this template: 
// web/app/design/frontend/base/default/template/payment/info/default.phtml 
$order = $emailTemplateVars['order']; 
$paymentBlock = Mage::helper('payment')->getInfoBlock($order->getPayment()) 
       ->setIsSecureMode(true); 
$paymentBlock->getMethod()->setStore(Mage::app()->getStore()); 

$emailTemplateVars['payment_html'] = $paymentBlock->toHtml(); 

//displays the rendered email template 
echo $emailTemplate->getProcessedTemplate($emailTemplateVars); 
+1

請在您的代碼中添加更多信息,以便下面的訪問者能夠從您的答案中獲益! – KhorneHoly

0

您可以進入後臺,去給客戶,選擇自己的客戶的用戶,並在底部你將有「發送自動生成的密碼「。插入管理員密碼並點擊「保存並繼續編輯」。這樣你就可以將密碼發送到你自己的帳戶並測試你的模板。

12

銷售訂單,我使用測試賬戶和一個腳本我有我的根目錄。

劇本是這樣的:

<?php 
include 'app/Mage.php'; 
Mage::app('default'); 

$_order = Mage::getModel('sales/order')->load($argv[1]); 
$_order->sendNewOrderEmail(); 

,我把它想:

php -f sendTestEmail.php -- 4303 

,其中4303是我以前也用於測試的順序。

希望有所幫助。

+1

這是一個網頁無法訪問的shell腳本的理想用例。如果一個腳本小孩在網絡根目錄中發現了這個垃圾郵件蝙蝠俠。 –

0

良好的擴展我用一個小的測試腳本再次發送訂單確認電子郵件。這適用於Magento 1.9,因爲它會觸發cronjob處理電子郵件隊列。此外,它重置屬性「發送電子郵件」,因此Magento不會跳過發送該電子郵件。

include 'app/Mage.php'; 
Mage::app('default'); 

$oid = '1234567'; 

$_order = Mage::getModel('sales/order')->load($oid);  
$_order->setEmailSent('0'); 
$_order->save(); 

$_order->sendNewOrderEmail(); 

// var_dump($_order); 

// Trigger email queue 
$a = new Mage_Core_Model_Email_Queue(); 
$a->send(); 

echo "\nFinished\n"; 
0

進入app/code/local/Mage/Core/Model/Email/Template.php文件。 在發送功能,圍繞線441有一段代碼

if ($this->isPlain()) { 
     $mail->setBodyText($text); 
    } else { 
     $mail->setBodyHTML($text); 
    } 

添加後回聲$文本}用模具。它會在瀏覽器上回顯郵件而不實際發送給用戶。

相關問題