質問 > 管理機能 > メール送信処理について |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
Rights |
投稿日時: 2021/6/21 17:08
対応状況: −−−
|
一人前 登録日: 2019/3/12 居住地: 投稿: 99 |
メール送信処理について ▼テンプレート
[EC-CUBE] 2.13.5 SMTPを利用して注文や問い合わせメール、メルマガ配信などしていますが、スパムメールでの悪用で、送信に使用しているメールアカウントのパスワードを変更しました。 ECCUBE側で、 /data/config/config.php /data/module/Mail/smtp.php に設定しているバスワード変更をしておらず、メールマガジンを配信しましたが、一部の宛先にメールが送信できたという事だったのですが、そのような事が可能なのでしょうか? 管理画面の履歴では、配信数のうち8割が送信済みとなり、残りが配信失敗となっていました。 配信時間帯のログを確認するとほぼ、 2021/XX/XX XX:XX:XX [/admin/mail/index.php] Warning(E_USER_WARNING): メール送信に失敗しました。[ authentication failure [SMTP: Invalid response code received from server (code: 535, response: 5.7.8 Error: authentication failed: XXXXXXXXXXXX)]] on [/data/class/SC_SendMail.php(330)] from XXX.XXX.XXX.XXX 配信済みとなっているものも送信できていないようですが、サーバーから配信済みのステータスを受け取っているという事でしょうか? そもそも、パスワードが変わっているため、上記のように認証エラーで1通も送信できないと思うのでしょうがサーバー側の問題でしょうか? |
Rights |
投稿日時: 2021/6/22 14:52
対応状況: −−−
|
一人前 登録日: 2019/3/12 居住地: 投稿: 99 |
Re: メール送信処理について 追記です。
dtb_send_historyに配信履歴が残りますが、カラム「send_count」と「complete_count」が一致していませんでした。 管理画面上の「配信済数」と「配信失敗数」の件数と一致しないのですが、なぜでしょうか? こちらの数は「dtb_send_customer」の配信フラグ(1:送信済、2:送信失敗)を元にした集計で、配信フラグ「1」の総計と「complete_count」の数が一致するはずですが、「complete_count」の方が少ないです。(実際に送信された件数?) この場合、dtb_send_history の complete_countは何を指すのでしょうか? 例えば配信総数(send_count)が1,000件で、complete_countが500件の場合、配信できたのが500件で失敗が500件になると思うのですが、認識として間違いないでしょうか? また、再試行の際の所作ですが、配信に失敗した対象のみ再度メール送信を行うという事で良いでしょうか? 「dtb_send_customer」ですが、データとして配信数分のレコードが作成されてそのフラグが1になるか2になるかの取り扱いでしょうか? ※最新の状態のメール送信状況しかわからないという事で良いでしょうか? |
Rights |
投稿日時: 2021/6/22 15:17
対応状況: −−−
|
一人前 登録日: 2019/3/12 居住地: 投稿: 99 |
Re: メール送信処理について public function sfSendMailmagazine($send_id)
{ $objQuery =& SC_Query_Ex::getSingletonInstance(); $objDb = new SC_Helper_DB_Ex(); $objSite = $objDb->sfGetBasisData(); $objMail = new SC_SendMail_Ex(); $where = 'del_flg = 0 AND send_id = ?'; $arrMail = $objQuery->getRow('*', 'dtb_send_history', $where, array($send_id)); // 対象となる$send_idが見つからない if (SC_Utils_Ex::isBlank($arrMail)) return; // 送信先リストの取得 $arrDestinationList = $objQuery->select( '*', 'dtb_send_customer', 'send_id = ? AND (send_flag = 2 OR send_flag IS NULL)', array($send_id) ); // 現在の配信数 $complete_count = $arrMail['complete_count']; if (SC_Utils_Ex::isBlank($arrMail)) { $complete_count = 0; } foreach ($arrDestinationList as $arrDestination) { // お名前の変換 $customerName = trim($arrDestination['name']); $subjectBody = preg_replace('/{name}/', $customerName, $arrMail['subject']); $mailBody = preg_replace('/{name}/', $customerName, $arrMail['body']); $objMail->setItem( $arrDestination['email'], $subjectBody, $mailBody, $objSite['email03'], // 送信元メールアドレス $objSite['shop_name'], // 送信元名 $objSite['email03'], // reply_to $objSite['email04'], // return_path $objSite['email04'] // errors_to ); // テキストメール配信の場合 if ($arrMail['mail_method'] == 2) { $sendResut = $objMail->sendMail(); // HTMLメール配信の場合 } else { $sendResut = $objMail->sendHtmlMail(); } // 送信完了なら1、失敗なら2をメール送信結果フラグとしてDBに挿入 if (!$sendResut) { $sendFlag = '2'; } else { // 完了を 1 増やす $sendFlag = '1'; $complete_count++; } sned_flag = '1' と $complete_countの増分処理を同じ箇所で行っていることから、 ●現在「dtb_send_history」に残っている「complete_count」に残っている送信数分、「dtb_send_customer」で「send_flag」が"2"だった配信先に送信して送信済みになった。 という解釈で良いのでしょうか? |
coremobile |
投稿日時: 2021/12/11 20:07
対応状況: −−−
|
長老 登録日: 2018/8/30 居住地: 投稿: 186 |
Re: メール送信処理について エラー内容はSMTP: Invalid response code received from server (code: 535, response: 5.7.8 Error: authentication failed: XXXXXXXXXXXX)とのことなのでメール送信時に
SMTPサーバからエラーが返ってきている状態です。 SMTP送信するアカウントのID、PWなど間違っておりませんでしょうか? |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |