前提・実現したいこと
メーラーを利用して送信している通知で、RFC違反のメールアドレスにも対応できるよう変更して欲しいと言われ、現状把握のためテストをしています
以下の方法で確認をし、コード的にはRFC違反のアドレスにも送信処理が走ると思ったのですがこの見立ては正しいでしょうか?
発生している問題・エラーメッセージ
修正前に挙動を確認したいと思いローカルで以下のようにデバックしてみたのですが、特にエラーらしいエラーが出ませんでした
規約違反ではないアドレスと同じ結果が表示されました
$ bin/cake console >>> use Cake\Mailer\Mailer; >>> use Cake\Mailer\Email; >>> Email::deliver('myname+you......@mycompany.co.jp', 'Subject', 'Message', ['from' => 'myname+me@mycompany.co.jp']); => Cake\Mailer\Email {#246 +charset: "UTF-8", +headerCharset: "UTF-8", +viewClass: null, +viewVars: [], }
該当のソースコード
メール送信のコード
src/Controller/Component/MailComponent.php
public function sendMailConfirm($club, $change) { if ($this->_isSend && !empty($change->mail)) $this->getMailer('Customer')->send('mail_confirm', [$club, $change]); }
src/Mailer/CustomerMailer.php
/** * メルアド設定 or 変更 */ public function mail_confirm($club, $change) { $from = Configure::read('Mailer.From'); $to = $change->mail; $this ->from($from) ->to($to) ->subject('PINコード送信') ->template('mail_confirm', 'default') ->set(['pin_code' => $change->pin_code]); }
メールアドレスのチェック
vendor/cakephp/cakephp/src/Mailer/Email.php
。。。 const EMAIL_PATTERN = '/^((?:[\p{L}0-9.!#$%&\'*+/=?^_`{|}~-]+)*@[\p{L}0-9-._]+)$/ui'; 。。。。 protected $_emailPattern = self::EMAIL_PATTERN; 。。。 public function reset() { $this->_to = []; $this->_from = []; $this->_sender = []; $this->_replyTo = []; $this->_readReceipt = []; $this->_returnPath = []; $this->_cc = []; $this->_bcc = []; $this->_messageId = true; $this->_subject = ''; $this->_headers = []; $this->_textMessage = ''; $this->_htmlMessage = ''; $this->_message = ''; $this->_emailFormat = 'text'; $this->_transport = null; $this->_priority = null; $this->charset = 'utf-8'; $this->headerCharset = null; $this->_attachments = []; $this->_profile = []; $this->_emailPattern = self::EMAIL_PATTERN; $this->viewBuilder()->setLayout('default'); $this->viewBuilder()->setTemplate(''); $this->viewBuilder()->setClassName('Cake\View\View'); $this->viewVars = []; $this->viewBuilder()->setTheme(false); $this->viewBuilder()->setHelpers(['Html'], false); return $this; }
わからないこと
RFC違反のアドレスであっても、バリデーションには引っかからずに送信ができているコードであると思ったのですがそれを確認するために上記の方法は間違っているでしょうか?また、送れるという見立てそのものはどうでしょうか?
実際に送信することができているかどうかは、メールに専用のURLを貼ってそこにアクセスがあるかどうか以外で何か確認する方法はあるでしょうか?
もし送信ができていない場合、送信に利用するものをPHPのメール関数ではなくSMTPサーバーなど他の手段に切り替えれば送信できる可能性がありますでしょうか?
根本的に理解が間違っていて的外れな部分があるかもしれません
もし何か木になることがありましたらご指摘いただければと思います
よろしくお願いします
補足情報(FW/ツールのバージョンなど)
cakephp3.5
PHP7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。