2012-01-11 20 views
0

有沒有辦法以編程方式將發送郵件標記爲已發送?在Google中尋求幫助之後,我空手而歸。有沒有辦法以編程方式將發送郵件標記爲已發送?

我已經成立了一個觀察員發送一個電子郵件,只要追蹤號碼被添加到貨件,但我需要能夠在管理員中顯示郵件已發送而不是顯示「發貨郵件不發送。「

UPDATE

這裏是我的代碼。我能得到的電子郵件發送就好了,但我不能讓email_sent標誌被設置

class WR_TrackingEmail_Model_Observer 
{ 
    public function sendTrackEmail($observer) 
    { 
     $track = $observer->getEvent()->getTrack(); 
     $shipment = $track->getShipment(true); 
     $shipment->sendEmail(); 
     $shipment->setEmailSent(true); 
    } 
} 


更新2

嘗試下面的代碼後,我遇到一個新的問題。該項目被標記爲已發貨,但由於某種原因,我收到了一百萬份運輸郵件。我假設一個循環正在發生。任何人都可以告訴我我在這裏做錯了什麼?

public function sendTrackEmail($observer) 
{ 
    $track = $observer->getEvent()->getTrack(); 
    $shipment = $track->getShipment(true); 
    $shipment->sendEmail(); 
    $shipment->setEmailSent(true); 

    $saveTransaction = Mage::getModel('core/resource_transaction') 
        ->addObject($shipment) 
        ->addObject($shipment->getOrder()) 
        ->save(); 
} 

回答

1

通常,這是將所有快件狀態的方式,所有的通知郵件一起: -

$_eachOrderTrackingNum = 'ANY_SPECIFIC_TRACKING_NUMBER'; 
$arrTracking = array(
    'carrier_code' => 'ups', 
    'title' => 'United Parcel Service', 
    'number' => $_eachOrderTrackingNum, 
); 

$track = Mage::getModel('sales/order_shipment_track')->addData($arrTracking); 
$shipment->addTrack($track); 
$emailSentStatus = $shipment->getData('email_sent'); 

$customerEmail = $order->getData('customer_email'); 
if (!is_null($customerEmail) && !$emailSentStatus) { 
    $shipment->sendEmail($customerEmail, ''); 
    $shipment->setEmailSent(true); 
} 

$saveTransaction = Mage::getModel('core/resource_transaction') 
        ->addObject($shipment) 
        ->addObject($shipment->getOrder()) 
        ->save(); 

這裏的「$shipment」是「Mage_Sales_Model_Order_Shipment」的對象,則訂單後已轉換爲此Shipment對象。另外「$order」是特定的Order對象。

希望它有幫助。


UPDATE

看到你更新後,似乎你需要使用下面的代碼爲你的方法 「sendTrackEmail()」: -

public function sendTrackEmail($observer) 
{ 
    $track = $observer->getEvent()->getTrack(); 
    $shipment = $track->getShipment(true); 
    $shipment->sendEmail(); 
    $shipment->setEmailSent(true); 

    $saveTransaction = Mage::getModel('core/resource_transaction') 
        ->addObject($shipment) 
        ->addObject($shipment->getOrder()) 
        ->save(); 
} 
+0

請參見上面我的更新。 – Jen 2012-01-12 16:57:05

+0

@Jen - 請檢查我的更新回答 – 2012-01-13 06:40:28

+0

這隻會讓我陷入某種形式的循環中,會引發大約100萬封電子郵件.... – Jen 2012-01-13 16:14:37

相關問題