質問 > フロント機能 > 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして |
フロント機能
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
gunung |
投稿日時: 2013/10/12 23:00
対応状況: −−−
|
半人前 登録日: 2013/10/11 居住地: 投稿: 14 |
Re: 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして yassyさん、こんばんは。
EC-CUBEについては素人なので、詳細はほかの方に補足していただくとして、 多少プログラムはわかりますので、わかる範囲でお応えします。 まずこの修正の意味ですが、メールの 「送り主(sender)」と「エラーメール返信先(Return-path)」 を一致させる目的があるようです。 これは一般的に迷惑メールでこの2つの設定が一致していないことが多いためです。おそらくこの2つの値が一致していないことを理由に迷惑メールと判定しているメールサーバーがあるのでしょう。(推測) ただし、この2つの設定が一致しないメールが必ずしも迷惑メールだといえるわけではありませんので、あまりよいフィルタ方法とは言えません。ただ現実にこのようなフィルタをしているサーバーがあるとすれば、対策を取らざるを得ませんね。 ●どちらが正しいか 結論から言うと、どちらでも動作します。 ですが、どちらの修正方法も厳密には元の処理の一部を無視して書き換えてしまっており、あまりよい修正とは言えません。 ●変更後のコード提案 このように書き換えれば元の処理を生かしつつ、目的も達成できるはずです。 ====プログラムはじめ==== $parameter = "-f" . $headers['Return-Path']; if (empty($this->_params) || ini_get('safe_mode')) { $result = mail($recipients, $subject, $body, $text_headers, $parameter); } else { $result = mail($recipients, $subject, $body, $text_headers, $this->_params . $parameter); } ====プログラム終わり==== ●迷惑メール対策 上記のコード変更だけで迷惑メールと判定されなくなるかはわかりません。 うまくいかない場合、下記のような対策も検討してみて下さい。 smtpサーバが迷惑メールサーバと思われないようにする http://perl.no-tubo.net/2011/06/30/smtp%E3%82%B5%E3%83%BC%E3%83%90%E3%81%8C%E8%BF%B7%E6%83%91%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%81%A8%E6%80%9D%E3%82%8F%E3%82%8C%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB/ ▼▼▼▼▼▼ ここから先はより詳細な説明です ▼▼▼▼▼▼ 大変な長文になってしまいました。 面倒なら読まなくても結構です。 ●変更前の処理概要 変更前の処理を日本語に訳してみます。 わかりやすくするため、厳密ではありません。 ====プログラムはじめ==== if (empty($this->_params) || ini_get('safe_mode')) { $result = mail($recipients, $subject, $body, $text_headers); } else { $result = mail($recipients, $subject, $body, $text_headers,$this->_params); } ====プログラム終わり==== ====日本語訳はじめ==== もし「$this->_paramsが空(何の設定もない)」もしくは「セーフモードの設定がされている」なら 当てはまったら、下記の設定でメールを送りなさい 送り主:$recipients 題名:$subject 本文:$body ヘッダー:$header 当てはまらなかったら、下記の設定でメールを送りなさい 送り主:$recipients 題名:$subject 本文:$body ヘッダー:$header 追加設定:$this->params 終わり ====日本語訳おわり==== ●方法1変更後の処理概要 ====プログラムはじめ==== $parameter = "-f" . $headers['Return-Path']; if (empty($this->_params) || ini_get('safe_mode')) { $result = mail($recipients, $subject, $body, $text_headers, $parameter); } else { $result = mail($recipients, $subject, $body, $text_headers, $parameter); } ====プログラムおわり==== ====日本語訳はじめ==== 変数$parameterに 「-f (エラー時の返信メールアドレス)」という文字を入れなさい もし「$this->_paramsが空(何の設定もない)」もしくは「セーフモードの設定がされている」なら 当てはまったら、下記の設定でメールを送りなさい 送り主:$recipients 題名:$subject 本文:$body ヘッダー:$header 追加設定:$parameter 当てはまらなかったら、下記の設定でメールを送りなさい 送り主:$recipients 題名:$subject 本文:$body ヘッダー:$header 追加設定:$parameters 終わり ====日本語訳おわり==== これでは、条件を付けて処理を分岐した意味がありません。 下記のプログラムと処理結果は同じです。 ====プログラムはじめ==== $parameter = "-f" . $headers['Return-Path']; $result = mail($recipients, $subject, $body, $text_headers, $parameter); ====プログラムおわり==== $this->_params に何も設定が入っていない場合はいいですが、 何か設定されていた場合は、設定した内容を全く無視してメールを送ることになります。 ●方法2変更後の処理概要 ====プログラムはじめ==== $this->_params = "-f" . $headers['Return-Path']; if (empty($this->_params) || ini_get('safe_mode')) { $result = mail($recipients, $subject, $body, $text_headers); } else { $result = mail($recipients, $subject, $body, $text_headers, $this->_params); } ====プログラムおわり==== ====日本語訳はじめ==== $this->_paramsに 「-f (エラー時の返信メールアドレス)」という文字を入れなさい もし「$this->_paramsが空(何の設定もない)」もしくは「セーフモードの設定がされている」なら 当てはまったら、下記の設定でメールを送りなさい 送り主:$recipients 題名:$subject 本文:$body ヘッダー:$header 当てはまらなかったら、下記の設定でメールを送りなさい 送り主:$recipients 題名:$subject 本文:$body ヘッダー:$header 追加設定:$this->_params 終わり ====日本語訳おわり==== 今度の処理は、条件に当てはまった場合は相変わらず従来と同じ形式のメールが送信されます。 条件に当てはまらなかった場合、「送り主(sender)」と「エラーメール返信先(Return-path)」は一致しますが、もともと$this->_paramsに入っていた設定は上書きされて消えてしまっています。 ●変更後のコード提案 このように処理を書き換えればいいのではないでしょうか? ====プログラムはじめ==== $parameter = "-f" . $headers['Return-Path']; if (empty($this->_params) || ini_get('safe_mode')) { $result = mail($recipients, $subject, $body, $text_headers, $parameter); } else { $result = mail($recipients, $subject, $body, $text_headers, $this->_params . $parameter); } ====プログラムおわり==== ====日本語訳はじめ==== $parameterに 「-f (エラー時の返信メールアドレス)」という文字を入れなさい もし「$this->_paramsが空(何の設定もない)」もしくは「セーフモードの設定がされている」なら 当てはまったら、下記の設定でメールを送りなさい 送り主:$recipients 題名:$subject 本文:$body ヘッダー:$header 追加設定:$parameter 当てはまらなかったら、下記の設定でメールを送りなさい 送り主:$recipients 題名:$subject 本文:$body ヘッダー:$header 追加設定:$this->_paramsと$parameterをつなげた文字列 終わり ====日本語訳おわり==== ※参考URL PHP メール送信 http://php.net/manual/ja/function.mail.php Return-path 用語説明 http://www.pi-pe.co.jp/word/i/returnpath.html |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして | yassy | 2013/10/11 17:14 |
» Re: 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして | gunung | 2013/10/12 23:00 |
Re: 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして | gunung | 2013/10/12 23:32 |
Re: 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして | gunung | 2013/10/12 23:53 |
Re: 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして | yassy | 2013/10/13 10:11 |
Re: 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして | gunung | 2013/10/14 10:11 |
Re: 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして | yassy | 2013/10/15 7:57 |
Re: 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして | gunung | 2013/10/15 9:43 |
Re: 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして | yassy | 2013/10/15 14:39 |
Re: 2.11.5 送信メールが迷惑フォルダに入ることを回避する方法につきまして | gunung | 2013/10/15 15:22 |