バージョン選択

フォーラム

メニュー

オンライン状況

21 人のユーザが現在オンラインです。 (14 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 21
もっと...

サイト内検索

質問 > フロント機能 > 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

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,353名です
総投稿数は110,082件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1304
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.