私はMagento 1.9.1を使用しています。新しい注文を作成するとき、それがフロントエンドであろうと管理者であろうと、システムは2つのメールを送信しています。両方とも同じです!
私はネットを調べて、古いバグを発見しましたが、コメントするコードが見つかりませんでした。また、Paypalの注文に関係しているように見えましたが、そうではありません。
すべての拡張機能を無効にしましたが、同じ問題が引き続き発生したため、拡張機能の問題ではないと確信しています。
私はMagento 1.9.1を使用しています。新しい注文を作成するとき、それがフロントエンドであろうと管理者であろうと、システムは2つのメールを送信しています。両方とも同じです!
私はネットを調べて、古いバグを発見しましたが、コメントするコードが見つかりませんでした。また、Paypalの注文に関係しているように見えましたが、そうではありません。
すべての拡張機能を無効にしましたが、同じ問題が引き続き発生したため、拡張機能の問題ではないと確信しています。
回答:
この問題は、受信者テーブルに孤立したレコードを残す新しいMagento電子メールキューシステムに関連する必要があります。これが問題である場合、修正をお送りします。
新しいMagento電子メールキューシステムは、これら2つのテーブルcore_email_queueおよびcore_email_queue_recipientsを管理します。前者は電子メールメッセージを処理し、後者はこれらのメッセージの受信者を処理します。
core_email_queue Magentoのメールキューに電子メールが送信されるように、テーブルが一掃されます。このクリーニングは、app / code / core / Mage / Core / etc / config.xm l構成ファイル内で定義されているcore_email_queue_clean_upというcron タブジョブによって実行されます。クリーニングを実行するコードは、Mage_Core_Model_Resource_Email_QueueクラスのremoveSentMessages関数で定義されています。
/**
* Remove already sent messages
*
* @return Mage_Core_Model_Resource_Email_Queue
*/
public function removeSentMessages()
{
$this->_getWriteAdapter()->delete($this->getMainTable(), 'processed_at IS NOT NULL');
return $this;
}
上記のコードは、cronタスクによって1日に1回実行されます。
ただし、core_email_queue_recipientsテーブル(電子メールの受信者を保持し、message_idフィールドによってcore_email_queueテーブルにリンクされているテーブル)がcore_email_queueテーブル(電子メールメッセージを保持するテーブル)と一緒にクリーニングされず、孤立したレコードが内部に残ることがありますその受信者テーブルは、その後メッセージテーブルが消去されます。
ここで説明されている問題は、core_email_queueテーブル(メッセージ)がリセットされ、このテーブルのautoincrement message_idフィールドが1に再起動されたときに発生します。
core_email_queue_recipientsテーブル(Recipients)はそれに応じてクリーンアップされていないため、新しい電子メールがMagento電子メールキューに追加されると、core_email_queueテーブルに新しいレコードが作成され(message_idが1から再び始まります)、同時に新しいレコードが作成されます上core_email_queue_recipientsのこれらの同じIDを持つテーブル(1から再度開始します)。
問題は、これらのIDが(以前の電子メールメッセージにより)孤立レコードとしてRecipientsテーブルに既に存在する可能性があることです。これらの新しいメッセージIDは、core_email_queue_recipientsテーブル内で繰り返されます。最終的に、異なる電子メールメッセージはmessage_idによって対応する受信者にリンクされますが、以前の電子メールから同じmessage_idが割り当てられた以前の受信者にも誤ってリンクされます。
したがって、適切な受信者に加えて、特定のメッセージを送信するために受信者が検索されると、他の誤った受信者が発生する可能性があります。
幸いなことに、この問題の修正は簡単に実行できます。
必要なのはそのすべてが上のすべての繰り返しのメッセージIDを掃除されcore_email_queue_recipientsのテーブル、と確認して、メッセージがで削除されたときにcore_email_queue、それに対応する受信者が上削除されますと同時に、テーブルcore_email_queue_recipientsのテーブル。
これを実現する最善の方法は、これらのレコードをリンクしてカスケードで削除する外部キーを作成することです(ただし、それを行う前にいくつかのクリーニングを行う必要があります)。
これは問題を修正する手順です:
1)次の2つのSQLクエリを実行して、孤立レコードと繰り返しメッセージIDからcore_email_queue_recipientsテーブルを消去します。
DELETE FROM core_email_queue_recipients WHERE message_id NOT IN (SELECT message_id FROM core_email_queue);
DELETE FROM core_email_queue_recipients WHERE recipient_id < (SELECT recipient_id FROM (SELECT recipient_id FROM core_email_queue_recipients ORDER BY message_id ASC, recipient_id DESC LIMIT 1) AS r);
最初のクエリは孤立したレコードを削除し、2番目のクエリは無効になった古いレコードを削除します。
2)core_email_queue_recipientsテーブルに外部キーを作成して、カスケードの受信者レコードを削除します。この外部キーを作成するSQLクエリは次のとおりです。
ALTER TABLE core_email_queue_recipients ADD FOREIGN KEY(message_id) REFERENCES core_email_queue(message_id) ON DELETE CASCADE;
この新しい外部キーを使用することにより、全く孤立したレコードが上に残しませんcore_email_queue_recipientsの清掃時にテーブルcore_email_queueテーブルを、そして間違った受信者への重複したメッセージは、将来的には送信されません。
同じ問題がありました。注文ごとに、顧客の電子メールと店舗のアドレス宛ての個別の電子メールを受け取ります。両方とも私の店舗の電子メールアカウントのメールボックスに届きます。
Magento管理画面:システム>設定>販売メール>注文
「注文メールのコピー方法を送信」という電子メールを「メールの分離」から「Bcc」に設定しましたが、現在は機能しています。現在、注文ごとに1つの電子メールのみを受信しています。
同じ問題がありました。私の場合、問題はcron.shスクリプトのソースコードが原因でした。
私のホスティングプロバイダーは、Magento cronジョブ用に独自のバージョンのcron.shおよびcron.phpスクリプトを使用しました。
Magento-Cron-Jobを開始するためにcron.shスクリプトからcron.phpスクリプトに変更したとき、新しい注文の電子メールは1回だけ送信され、問題は解決しました。
たぶんあなたの問題はcron.shまたはcron.phpスクリプトのコードと関係があるかもしれません。