wordpress@localhost
が無効なアドレスなので送れないのです。
解決策
フックで有効なアドレスにしよう
add_filter( 'wp_mail_from', fn() => get_option('admin_email') );
gmailで送る場合
まずは、2段階認証を有効にしてパスワードを作ります
https://qiita.com/7mpy/items/5cbb021aa7505b28b7a2
wp-includes/pluggable.php:145に追記する例
function gmail($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.gmail.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587;
$phpmailer->Username = 'funaox@gmail.com';
$phpmailer->Password = 'mddtgtfbrznzcmoe';
}
add_action('phpmailer_init', 'gmail');
add_filter( 'wp_mail_from', fn() => get_option('admin_email') );
※mddtgtfbrznzcmoeのアカウントは削除済みです
動作確認
$ wp-env run cli wp shell --allow-root
ℹ Starting 'wp shell --allow-root' on the cli container.
wp> wp_mail( 'funaox@gmail.com', 'mail test', 'hello wp_mail!' );
=> bool(true)
wp>
メールの受信箱
mailtrapも便利!
wp-includes/pluggable.php:145に追記する例
function mailtrap($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'sandbox.smtp.mailtrap.io';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 2525;
$phpmailer->Username = 'a1de692d385898';
$phpmailer->Password = '********0f44';
}
add_action('phpmailer_init', 'mailtrap');
add_filter( 'wp_mail_from', fn() => get_option('admin_email') );
動作確認
$ wp-env run cli wp shell --allow-root
ℹ Starting 'wp shell --allow-root' on the cli container.
wp> wp_mail( 'vojoba3724@gameszox.com', 'mail test', 'hello wp_mail!' );
=> bool(true)
wp>
smtp設定してない場合はメール送れなかったorz
sendmail: can't connect to remote host (127.0.0.1): Connection refused
まとめ
最初から素直にLocal by Flywheel使った方がいいと思います
参考