Welcart 「Management 受注データ編集」画面からメールが送信できない

エックスサーバのX10プランを契約している。
他レンタルサーバも幾つか使ってみたけど安定感、レスポンスはピカイチ。


ところが先日のリプレース以降、特定の条件でメールの送信に失敗するようになった。

よくある解決法としては「WP-Mail-SMTP」プラグインをインストールして
SMTPサーバー経由でメールを送信しましょう、というもの。
早速、試してみたけどNG。

WordPressユーザー登録時のメールは送信されるし、
テストで登録した顧客データへはメールが送信できる。

どういったパターンでメール送信に失敗しているのか、細かく見ていくと・・・
「プラス(“+”)が含まれていないメールアドレスには送信できない」ことが分かった!!
なにそれ・・・?汗

エラーメッセージからコードを解析していくと・・・

1. order_edit_form.php – エラーメッセージ(英文) ‘Failure in sending e-mails.’

2. order_edit_form.php – uscesMail.settings.data = “action=order_item_ajax&mode=sendmail・・・”

3. item_post.php – order_item_ajax()

4. function.php – usces_ajax_send_mail()

5. function.php – usces_send_mail()

foreach($to_mailes as $to_maile){
// if (strpos($to_maile, '..') !== false || strpos($to_maile, '.@') !== false || strpos($to_maile, '+') !== false){
if (true){
$headers = "From: " . $from_address . "\r\n";
$res = @mb_send_mail($to_maile, $subject, $message, $headers );
}elseif( !empty( $to_maile ) ){
$headers = ( !empty($para['headers']) ) ? $para['headers'] : '';
$res = @wp_mail( $to_maile , $subject , $message, $headers );
}else{
$res = false;
}
sleep(1);
}

理由はよく分からないけど@wp_mailでメールの送信に失敗しているらしい。
偶然にも「your-email-address@gmail.com」を
「your-email-address+SYSTEM-NAME@gmail.com」のように
プラス(“+”)を含んだメールアドレスでテストしていたので発見が遅れてしまった。

RFC準拠してないメールアドレス宛には@mb_send_mailで送信したい、という意図のように見てとれる。
仕方がないので全てのメールアドレスを@mb_send_mailで送信するよう、ロジックを書き換えた。

Welcartのバージョンアップ時に忘れずにメンテしないと。
アクションフックとかを使うと良いのだろうけど、このロジックは直接書き換えないとダメ・・・だよね?



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です