2012-01-11 12 views
0

送信メールを送信済みとしてプログラムでマークする方法はありますか? Googleの助けを借りて、私は空手を手にした。送信電子メールをプログラムとして送信済みとしてマークする方法はありますか?

トラッキング番号が貨物に追加されるとすぐに電子メールを送信するようにオブザーバーを設定しましたが、管理者は、メールが送信されたことを表示する代わりに、出荷電子メールは送信されません。

UPDATE

ここで私が持っているコードです。私は新しい問題が発生した、私は電子メールがうまく送信するために取得することができますが、私はemail_sentフラグは、次のコードを試した後UPDATE 2

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


を設定することができません。商品には出荷時のマークが付いていますが、何らかの理由で出荷電子メールが100万本あります。私はループがどこかで起こっていると仮定しています。誰かが私がここで間違っていることを教えてもらえますか?

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

+0

@Jen - 私の更新された答えを確認してください –

+0

それだけで約百万の電子メールを発射する何らかの種類のループにこだわってしまいます.... – Jen

関連する問題