phpで作成された単純なメール送信フォームからメールを送信しようとしたところ
ある特定の条件で送信エラーになるという現象に悩まされました。
その条件というのは以下の通りです。
・送信フォームの設置されているドメインと同一のドメイン宛のメールのみ送信されない
どういうことかと言うと、例えばメール送信フォームの設置されている
Webサイトのドメインが「sample.com」だったとして、
メールの宛先が「xxx@sample.jp」の場合はちゃんと届くけれど、
「xxx@sample.com」の場合には届かないというものです。
もう少し環境・状況を詳しく説明しますと、
1. WebサーバーはWindows 2003 server IIS 6.0 (恐らくあまり関係ない)
2. PHP 5.12
3. Classic ASP (basp利用) だと同一ドメインでも送信可能
4. WebサーバーのローカルにSMTPサーバーを展開
5. MailサーバーはWebサーバーとは別のサーバー上に設置
調べてみたところ、5(4も?)が原因だったと思われます。
IISのSMTPログを見てみたところPHPから同一ドメイン宛にメールを送信した際には全くログに記録がなく、
どうも
php「xxx@sample.com宛のメール?それなら今ボクの設置されてるサーバの所でしょ。
勝手に送信しておくね。あれ?」
てな具合でDNS参照もせず、ローカルのSMTPも使わずに送信しようとしてエラーになってしまうようです。
似たような現象にあっている人がいたので参考になりました。
さくらインターネットのPHPでMail関数を使うとInternal Server Errorになってしまう
phpの問題のような気がしますがどうでしょうか。
私はあまり深くは検証していませんが・・・
今回はサブドメインにしても良いとのことだったので宛先を「xxx@zzz.sample.com」に
変更することで回避できました。
2012年1月20日金曜日
2011年6月11日土曜日
Windows7 XAMPP PEAR MDB2 インストール
XAMPPをWindows7にインストールしPHPの学習を行っています。
データベース接続にPEARを使ってみようと調べていたところ
XAMPPを入れた時点で利用出来るDBパッケージは「deprecate(廃止予定)」
とのことなので、推奨されているMDB2を利用しようとしました。
ところが「not Found」というエラーが返ってき、どうやらMDB2のmysqlパッケージが
インストールされていない。
ネットで検索し、
pear install MDB2_Driver_mysql
をコマンドプロンプトから実行するも、今度は「failed to mkdir」のエラー。
コマンドプロンプトをオープンする際に、「右クリック→管理者として実行」を
行う必要があったようです。。。
これに結構ハマッてしまったのでメモ。
データベース接続にPEARを使ってみようと調べていたところ
XAMPPを入れた時点で利用出来るDBパッケージは「deprecate(廃止予定)」
とのことなので、推奨されているMDB2を利用しようとしました。
ところが「not Found」というエラーが返ってき、どうやらMDB2のmysqlパッケージが
インストールされていない。
ネットで検索し、
pear install MDB2_Driver_mysql
をコマンドプロンプトから実行するも、今度は「failed to mkdir」のエラー。
コマンドプロンプトをオープンする際に、「右クリック→管理者として実行」を
行う必要があったようです。。。
これに結構ハマッてしまったのでメモ。
2011年2月15日火曜日
Eclipseで矩形選択
Alt + Shift + A
で矩形選択できます。
Alt + ドラッグ の方が便利で良いのですが・・・。
ちなみに矩形は「くけい」と読むそうです。
短形選択だと思ってました。
で矩形選択できます。
Alt + ドラッグ の方が便利で良いのですが・・・。
ちなみに矩形は「くけい」と読むそうです。
短形選択だと思ってました。
2010年7月28日水曜日
Notice: Undefined index: を消したい
配列で未定義のキーを参照すると「Notice: Undefined index:」エラーが出る。
そもそも変数定義等をしなくてもイイ仕様にしたのはそっちなのに・・・。
表示を消してしまうには配列の頭に「@」を付ければ良い
だいぶん更新が空いてしまった・・・。
別に人に見せるのが目的ではなく、過去の自分が思ったことを見返したり
技術情報のメモに利用しているだけなので良いのだが
ワールドカップやNBAファイナルや色々あったのに・・・。
そもそも変数定義等をしなくてもイイ仕様にしたのはそっちなのに・・・。
表示を消してしまうには配列の頭に「@」を付ければ良い
$id = @$_GET["id"];
だいぶん更新が空いてしまった・・・。
別に人に見せるのが目的ではなく、過去の自分が思ったことを見返したり
技術情報のメモに利用しているだけなので良いのだが
ワールドカップやNBAファイナルや色々あったのに・・・。
登録:
投稿 (Atom)
