WORDPRESSで登録メール等が届かない・・・対応

WORDPRESSでは、新しいユーザーが登録された場合やお問い合わせフォームプラグインなどの設置で、自動的にメールが届く仕組みがある。

・・・はずなのだが、このメールが一向に届かない。

原因は、inetd。

およそのサーバにですね、inetd(※inetd は、FTP、POP3、telnet といったインターネットサービスが使うポート番号を(指定されて)監視する。監視対象のポートにTCPパケットあるいはUDPパケットが届くと、inetd は対応するサーバプログラムを起動し、コネクションを制御させる。by wikipedia)というのが、走っているわけなんですが、このinetdが、メール送信の時に、from情報もしているようで、WORDPRESSのデフォルトのまま設定ではこの監視に引っかかってしまうので、メールを受け取れない。

どういうことかというと。

WORDPRESSは、通知メールの送信に、wordpress@あなたのサイト名のアドレスでメールを送信します。このメールアドレスが、サーバ内に実在していれば、問題がないのだが、実在していないメールアドレスからの送信は、inetdの監視に引っかかってしまう。

て、おいおい。。。

最初からwordpress@domainなんてメアド誰がつくっとるねん;
とかツッコんでしまう。

よって、主な対応方法は、2つかと。。。

  1. 上記、wordpress@domainというメアドを実際に作ってWPの管理アドレスに設定する。
  2. または、このメアドをサーバに実在している実際の運用アドレスに変更する。

ま、たいてい、2ですな。

やり方。

/wp-includes/pluggable.php を開いて、L354あたりの、

$from_email = ‘wordpress@’ . $sitename;

を、(1)

$from_email = ‘あなたのめあど@domain‘;

か(2)

$from_email = ‘あなたのめあど@‘. $sitename;

に変更。

ただし、(2)の方法で変更する場合、wordpressで送信されるメールアドレスは、wwwのサブドメインは削除されることに留意すること。(→つまり、ドメインが、www.domain.comでも@から後ろは、domain.comにしかなりませんよ、でも、sub.domain.comだったら、そのままですよ、ということです。まあ、これは普通メアド作るときにも同じようなルールになるので、問題ないかと思うのですが・・・)

こういうところって結構悩みますね。

ちなみに、メアドチェックは、サーバー内で掛かりますよ。他のサービスで持ってるメアドで運用しようとしている場合は、要注意です。

【EC-CUBE】詳細ページに商品への問い合わせボタンを追加する

  1. 商品の詳細ページに、商品についての問い合わせボタンを追加し、問い合わせフォームへ遷移させる。
  2. 問い合わせフォームには、商品詳細ページから飛んできた問い合わせについては、フォームに商品名や品番などを自動入力されるように変更する。

フォーラムを見て、こんなことをやってみました。(ryoさん、ありがとうございます)

まず、/data/Smarty/templates/defaults/detail.tpl 内の、問い合わせボタンを追加したい位置に、問い合わせボタン用のフォームを追加する。(そのとき、注文用のフォームとかぶったり、入れ子にならないように注意!)

<form method=”post” action=”<!–{$smarty.const.SITE_URL}–>contact/”>
<input type=”hidden” name=”products_name” value=”<!–{$arrProduct.name|escape}–>” />
<input type=”submit” name=”” value=”この商品について問い合わせる” />
</form>

※ SSLに飛ばすなら赤字を「$smarty.const.SSL_URL」に変更。

つぎに、/data/Smarty/templates/contact/index.tpl のL67あたり、お問い合わせ内容を記入してもらうtextareaに下記コードを追加。

<tr>
<th>お問い合わせ内容<span class=”attention”>※</span><br />
<span class=”mini”>(全角<!–{$smarty.const.MLTEXT_LEN}–>字以下)</span></th>
<td><span class=”attention”><!–{$arrErr.contents}–></span>
<textarea name=”contents” class=”area380″ cols=”60″ rows=”20″ style=”<!–{$arrErr.contents|sfGetErrorColor}–>”><!–{if $smarty.post.products_name != ” }–><!–{$smarty.post.products_name|escape}–>に関するお問い合わせ

<!–{/if}–>
<!–{$contents|escape}–></textarea></td>
</tr>

<!–{if $smarty.post.products_name != ” }–><!–{/if}–>
を記載することによって、「(商品名)に関するお問い合わせ」という部分が、商品ページからの遷移の場合のみ追加されることになる。(=通常のお問い合わせの場合入らない)