EC-CUBEで顧客宛に送ったメールが届かない不具合があり、
解決できたのでメモしておきます。

ショップへ問い合わせや商品の注文をしてもなぜか、
顧客が記入したメールアドレスへ返信のメールが届かない現象が
発生。

管理者の方へはきちんと届いています。

ファイルを1つ変えるだけで解決できたので、メモしておきます。

変えたファイルは、data/module/Mail/smtp.php、というファイルだけです。

61行目
変更前: var $host = 'localhost';
変更後: var $host = 'xxxx.xrsv.jp';

使用するSMTPサーバー名を指定します。

xxxx.xrsv.jpはプロバイダーやレンタルサーバーから契約時に通知されているでsmtpのサーバー名です。私はXserverを使用しているのでこう書いてるだけです。xxxxの部分は個人によって変わります。

67行目
変更前: var $port = 25;
変更後: var $port = 587;

ポート番号も変更します。

80行目
変更前: var $auth = false;
変更後: var $auth = true;

指定したSMTPサーバーを使うためユーザー認証を行うようにしておきます。


86行目
変更前: var $username = '';
変更後: var $username = 'ユーザー名';

ユーザー名の部分はプロバイダーから契約時に知らされたものか、またはレンタルサーバーを使っている場合は自分で作成した?メールアカウントです。

92行目
変更前: var $username = '';
変更後: var $username = 'パスワード';

パスワードの部分はプロバイダーから契約時に知らされたものか、またはレンタルサーバーを使っている場合は自分で作成した?メールアカウントのパスワードです。

変更箇所は以上です。

※ 61行目、86行目、92行目がわからないときは、現在使用されているOutlook等のメールソフトで送信用サーバーの情報を設定した際の値と同じにすれば問題ないと思います。

私はこの設定でヤフーメールやGmail等のフリーメール宛でも、迷惑フォルダに入ることなく、届くようになりました♪

ではでは、今回はこの辺りで~(/・ω・)/

ブログトップへ
XserverでトップページのURLが変更できたのでメモしておきます。

仮にxxx.comという独自ドメインを取ったとします。

現在EC-CUBEをサーバー内の、xxx.com/public_html/appli/、以下にインストールした状態とします。
public_html直下にインストールしないのは、public_htmlが汚くなるから。

現在ショップのアドレスは、xxx.com/appli/index.php。
しかしショップのURLはxxx.comにしたいところ。なのでxxx.comにアクセスされた際、xxx.com/appli/index.phpの内容をブラウザに表示させる技です。ブラウザ上部のURLはxxx.comのまま。

Xserverではmod_rewrite(説明は省略)が使えるみたいなので、以下の内容の.htaccessというファイルをxxx.com/public_html/におきました。

RewriteEngine on
RewriteBase /
RewriteRule ^$ appli/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ appli/$1 [L]

この内容の.htaccessというファイルを置くだけで、xxxx.comへの
アクセスは自動的にxxx.com/appli/index.phpの内容が表示されます。

※ ちなみに「^」はルートディレクトリを表します・w・

ではでは、今回はこの辺りで~(/・ω・)/

ブログトップへ
現在、編集しているファイル中から、別のファイルをインクルードする方法


例:同じディレクトリ内のxxxx.phpというファイルを読み込む


$include_dir = realpath(dirname(__FILE__)) ;
require_once($include_dir . "xxxx.php" );

これでxxxx.phpというファイル内で宣言されているものを利用可能となる。


説明

__FILE__は現在編集中のファイル名が格納されている。これはphpが勝手に宣言、格納しているマジック定数なので、自分で定義する必要はない。

dirname(__FILE__)で返ってくるのは、__FILE__というファイルがあるディレクトリ名である。
realpath(dirname(__FILE__))で返ってくるのは、指定されたディレクトリ名のパスである。

なので、$include_dirには現在編集中のファイルのディレクトリへのパスが格納されることになる。

※ dirname()やrealpath()はphpの関数である。

結果、require_once($include_dir . "xxxx.php") という表現を使うことで、現在編集中のファイルと同じフォルダ内にあるxxxx.phpというファイルをインクルードすることができる。


この使い方、考え方は非常に有効で、至るところで使用されている。


特にdataフォルダ内にある,require_base.phpファイルでは様々なphpファイルが初期化の際にインクルードされている。

例(reauire_base.php内の記述)

$require_base_php_dir = realpath(dirname(__FILE__));

これで、$require_base_php_dir、にはdataフォルダ(require_base.phpがあるフォルダ)のパス名が格納される。
これを利用してクラスが存在するフォルダへのパスを次のように定義できる

define("CLASS_PATH", $require_base_php_dir . "/class/");

この後、classフォルダ以下のphpファイルをインクルードするには以下のように記述すればよい

require_once(CLASS_PATH . "SC_View.php" );

こんな感じである。

編集中のファイルから他のファイルをインクルードする問題はこれで解決できるはず。

今回はこの辺りで~(/・ω・)/

ブログトップへ