4
$to = "jijodasgupta@gmail.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
  echo("pMessage successfully sent!/p");
} else {
  echo("pMessage delivery failed.../p");
}

基本的なphpsendmailコードを記述しましたが、次のエラーが発生します。

警告:mail()[function.mail]:php.iniに「sendmail_from」が設定されていないか、5行目のC:\ xampp \ htdocs \ mail.phpにカスタム「From:」ヘッダーがありません...メッセージ配信に失敗しました...

`` php.iniファイルを変更して配置しましsendmail_from=jijodasgupta@gmail.comたが、それでも問題は解決しません。初めてメールスクリプトを書く。

私は何か間違ったことをしていますか?これを行うためのより良い方法はありますか?

4

6 に答える 6

2

additional_headers (オプション)

メールヘッダーの末尾に挿入する文字列。

これは通常、追加のヘッダー (From、Cc、および Bcc) を追加するために使用されます。複数の余分なヘッダーは、CRLF (\r\n) で区切る必要があります。

注: メールを送信する場合、メールには From ヘッダーが含まれている必要があります。これは additional_headers パラメータで設定するか、php.ini でデフォルトを設定できます。これを行わないと、次のようなエラー メッセージが表示されます。From ヘッダーは、Windows では Return-Path も設定します。

それが役立つことを願っています。

于 2009-07-09T15:21:23.467 に答える
1

同じ問題が発生しましaccount@servernameた。ヘッダーで自分のアドレスを指定したにもかかわらず、サーバーが差出人の電子メールアドレスとしてを使用していたことが原因でした。

私がどこかで見つけた答えは、メール呼び出しに5番目のパラメーターを追加して、システムに指定した差出人の電子メールアドレスを使用するように強制することでした。

$from = 'fromemail@domain.com'
$xheaders = "From: " . $from . " <" . $from . ">\n"; 
$i = mail("$useremail","$subject","$content",$xheaders,'-f fromemail@domain.com'); 
于 2012-09-12T02:15:25.810 に答える
1

まず、正しい php.ini を編集したことを確認phpinfo();します。スクリプト出力に、php.ini の場所を含む診断情報を追加します。設定された「sendmail_from」の値もここで確認できるはずです。

それができない場合は、 usbanで示されるように、From ヘッダーを提供します。

$hdrs="From: jijodasgupta@gmail.com";
mail($to, $subject, $body, $hdrs);
于 2009-07-09T15:21:34.153 に答える
1

正しい php.ini を編集しても変更が反映されない場合は、Web サービスを再起動することをお勧めします。多くの環境では、サーバーの起動時に php.ini のみがロードされるためです。

于 2009-07-09T16:22:28.243 に答える
0

PHP の mail() 関数は多くの問題を引き起こします。最終的にサーバーで動作するようになると、メールがユーザーのスパムフォルダーに入っていることに気付くでしょう。

代わりに、これらの PHP SMTP ライブラリのいずれかを使用してメールを送信することをお勧めします。

  • PHPMailer - デファクトスタンダード
  • http://swiftmailer.org/ - より現代的なアプローチですが、ユーザーベースは小さくなっています
于 2009-07-09T17:17:30.427 に答える
0

php.ini でフォーム アドレスを設定するのではなく、代わりに usoban が言ったようにヘッダーで送信します。

これにより、同じセットアップで別のサイトをホストし、次回ヘッダーを設定するのを忘れた場合の頭痛の種が解消されます。

于 2009-07-09T16:26:27.877 に答える