2006年11月27日月曜日

コンタクトフォームでメールSendエラー⇒暫定解決

現状原因不明

試しに MODx0.9.5rc2 でContactUSすると下記のエラー


[[Contac tForm? &sendTo=`[(emailsender)]`]]

[!eForm? &formid=`ContactForm` &subject=`[+subject+]` &to=`[(email_sender)]` &ccsender=`1` &tpl=`ContactForm` &report=`ContactFormReport` &gotoid=`46` !]

PHP error debug

mail() [function.mail]: SMTP server response: 451 MELON ssmtpd: Invalid mail address valign="top" type/ Nr.: Warning - 2
C:\Program Files\xampp\htdocs\modx095\manager\includes\controls\class.phpmailer.php
438 valign="top" 438 source: $rt = @mail($to, $this- $body, $header);

ぁゃιぃ

\manager\includes\controls\class.phpmailer.php (0.9.5 で)

これは下記のサイトの事例が参考になりそう

Yet Another 仕事のツール

PHPのメール送信機能を補助するための汎用的なメール送信ライブラリ ですと。


よく見ると 0.9.2.1 側は違うなぁ(セキュアしてないです)

[[ContactForm? &sendTo=`[(emailsender)]`]]
PHP error debug

mail() [function.mail]: SMTP server response: 451 MELON ssmtpd: Invalid mail address valign="top" type/ Nr.: Warning - 2
C:\Program Files\xampp\htdocs\modx\manager\includes\document.parser.class.inc.php(705) : eval()'d code
108

少し上記と違うな。


今日はここまで。まだ、snipet がわからない。文字コードでひっかっかってるのか? もっとそれ以前の話なのか? 



解決しました!

8 件のコメント:

ZeRo さんのコメント...

eFormとContactFormは全然別なので同時に呼び出しちゃ駄目ですが、エラーを見る限りはメアドがおかしいっていってますね。
eFormはフォーム自体をChunkでHTMLで作るんですが、toのアドレスが管理者のメアドとしてeFormのパラメタに必要です。
と、かなりいろんなことができる=ちょっと呼び出しが複雑ですので、説明が難しいですが・・んーー 
ContactFormはシンプルだったはずなので、こっちらトライかなぁ

ssmk さんのコメント...

お早いお返事ありがとうございます!
ありゃ?eFormとContactFormのコードは実は 0.9.5RC2 のサンプル[ontact Us (6)]の中身をそのままコピーしたんですよね。
お問合せページでエラーが表示される件について 0.9.5 で改善されたかなと思い(構造も違いそうでしたので)、テストしてみました。
結果 NG でしたが 0.9.2 と 0.9.5 は同じ ContactUs でも中身が違うものと考え、両方の結果を備忘録として挙げました。
メールアドレスがおかしいって何でだろう。(上記の内容から判断しても確かにそう思う)
共通の php.ini MODx設定 にて設定してFormSignUp のメール問題は解決できたのに、根本的に構造が違うのだろうか?

ZeRo さんのコメント...

んーー、設定の問題だけじゃないかなと思います。
ちなみに、RC2についてるeFormだと日本語は、化けるんじゃないかなと思うので英文でテストしてください。
eFormの書式は、http://www.petit-power.com/permalink/MODx_eForm_jp.html#extended を参考に。
あ、でも、RC2にはsuccessという呼び出しじゃなくて、thankyou だったような

ssmk さんのコメント...

eFormの次元まで行けそうにもありません。
ZeRoさん、頼ってばかりですみませんが
\manager\includes\document.parser.class.inc.php
の108行目にある
// check if url has /$base_url
global $base_url,$site_url;
で引っかかっていますがこのコメントにある、
/$base_url をチェックせよとはどういうことなのでしょうか?

でもEメールとなんの関係があるんだろう?

ZeRoさん、
浮気してしまいましたm(_ _)m

ZeRo さんのコメント...

リダイレクトでエラーっぽいですね
$base_urlも$site_urlも自動的にアクセスしたときに作られるのでエラーになるのはおかしいんですけど・・どんなエラーになります??
あのコメントの意味は私にもよくわからないっす(^^;
エラーになるってことは、その行にecho 'BASE_URL='.$base_url.' SITE URL='.$site_url; っていれてみて、変数の中身が表示されますか?
これがなんも表示されなかったら、それがそもそもそれがおかしいってことにはなるんですが。

浮気歓迎ですw っていうか、多分、同じところではまった人はいるんではないかなぁ
ContactFormは、確か○○さんが使ってた気がします。

ssmk さんのコメント...

まずは
// global $base_url,$site_url;
コメントアウトしても同じエラーで行数も同じ(108)
echo しても表示されません(もしかしたら(function sendRedirectとあるから)再読み込みして消えてしまうのかもしれません。(直ぐ後ろにexit;入れても結果は同じです。よくわかってないんでしょうね私)

ZeRo さんのコメント...

echoのすぐ下にexitをいれて、BASE_URL=まで出るなら正しいっす。
=の次に何もでないのが問題にはなりますが、BASE_URL=も出ないならifで別の方が動いてるということになりますね。
あ、// global $base_url,$site_url; コメントアウトはしない方がよいかと。。
上の行のコメントは別の意味じゃないかなぁと思います。
あれだけじゃ判断しかねますが、なんとなく。
あと、リダイレクト先のURL($url)を表示させてみるのも糸口になるかもですね。
そこで、エラーが出るっていうのは Already Header とか??

ssmk さんのコメント...


暫定解決!

スニペットのContactForm内のmail()に設定された $Header に問題があったようです。
ただ、暫定解決は出来たのですが
"UserName<user@domain.com>"
を認識させるのか...疑問は尽きませんが、ことが急がれるので後回しにします。
ZeRoさん、いつもありがとうございます。