wp_mail変更の影響で、送信元が長い場合に不具合発生。対応策です。
【バージョン】
・WP4.6
・Subscribe2 10.21
メール送信元関連
エラーメッセージ
PHP Fatal error: Uncaught exception 'phpmailerException' with message 'Invalid address: .........
header の From, Reply-To は、mb_encode_mimeheader でエンコードされるが、74bytes以上で改行される。
■From: 送信者名 <送信元メールアドレス>
■Reply-To: 送信者名 <送信元メールアドレス>
subscribe2 では、sender設定のフックを使用せず、header情報をwp_mailに渡している。
結果、改行されて中途半端となった送信元情報からメールアドレスを抜き出すために、Invalid Address となる。
SMTP経由送信用のプラグイン等で、送信元情報がセットされる場合は、phpmailerException にならずにすむ。(SMTPプラグイン依存となる)
今回、Easy WP SMTP を使用している環境で、Fromは上書きされるためokだったが、Reply-Toはheader追加されないプラグインだったため、fatal error となった。
応急処置
/subsribe2/classes/class-s2-coew.php 306行目あたり
変更前
$char_set = get_option('blog_charset'); if ( function_exists('mb_encode_mimeheader') ) { $header['From'] = mb_encode_mimeheader($this->myname, $char_set, 'Q') . " <" . $this->myemail . ">"; $header['Reply-To'] = mb_encode_mimeheader($this->myname, $char_set, 'Q') . " <" . $this->myemail . ">"; } else { $header['From'] = $this->myname. " <" . $this->myemail . ">"; $header['Reply-To'] = $this->myname . " <" . $this->myemail . ">"; }
変更後
mb_encode_mimeheaderは無視。UTF-8にしない。
$header['From'] = $this->myname. " <" . $this->myemail . ">"; $header['Reply-To'] = $this->myname . " <" . $this->myemail . ">";
その他
ついでに、WP4.5から非推奨になったget_currentuserinfo の PHP Notice 対応
応急処置
/subscribe2/classes/class-s2-frontend.php 124行目あたり
変更前
global $user_ID; get_currentuserinfo(); if ( $user_ID ) { $this->s2form = $this->profile; }
変更後
$user = wp_get_current_user(); if ( $user->ID ) { $this->s2form = $this->profile; }