質問

私はperlでsendmailを使用していますが、コマンドラインでスクリプトを実行すると、電子メールと受信者のメールを正しくフォーマットするための電子メールアドレスですが、CGIを介して実行している場合、\ n(s)がない場合、受信者の電子メールの形式が正しくないことを示すエラーが返されます。

これに遭遇した人はいますか?この2つはどう違うのですか?

役に立ちましたか?

解決

いくつかのコメントで、コマンドラインから-lオプション(perl -l foo.cgi)を使用してスクリプトを実行していることに言及しています。

-lオプションは自動行末処理を有効にします。問題は行末に関するものなので、-lなしで試してみることをお勧めします。

他のヒント

データはどこから来たのですか?スクリプトにハードコードされていますか、それともWebフォームからですか?

余談ですが、Webフォームから受信者のメールアドレスを取得すると、そのフォームはスパマーによって使用されます 。 100%の保証です。

用語「CGI」 perlスクリプトがコマンドラインで実行されるyur perlscriptに対してCGIとして実行されることを意味する場合、スクリプトが持つパスと一般的な継承環境に注目します。特に、異なるユーザーIDとして実行する場合。ウェブサーバーがchrootなどにある場合

use Data::Dumper;
warn(Dumper(\%ENV));

だから、コマンドラインから実行するには次のようなものがあると思います:

my $your_email = "you@foo.bar";
my $recipient_email = "them@foo.bar";

および" CGI経由で実行中"の場合:

my $your_email = "you@foo.bar\n";
my $recipient_email = "them@foo.bar\n";

だから私があなたに尋ねる質問は、上記の変数を使用してsendmailを呼び出す方法と、「CGIを介して実行」と言うときの意味です。コマンドライン経由で実行するのですか? CGIコードを追加しただけで、コマンドラインから実行するか、WebブラウザーでURLにアクセスしますか?

scroll top