2016-11-23 13 views
0

message_type 1を選択してメールを送信すると、php error_log関数でエラーが発生しました。 extra_headersパラメーターに指定した値は、受信された電子メールとエラーの作成を停止します。PHP error_logメッセージ1、複数のまたは改造された改行がadditional_headerに見つかりました

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
$headers .= 'From: [email protected]'.substr($_SERVER['SERVER_NAME'],4)."\r\n"; 

$log = var_export(debug_backtrace(), true); 

error_log("<HTML><body><h1>404 ERROR: $today</h1><br /><p>$log</p></body></HTML>", 1, "[email protected]", $headers); 

mod_fcgid:標準エラー出力:PHPの警告:error_logに():複数または不正な形式の改行がでadditional_headerで見つかった.....

現在のPHPのバージョン:5.6.24

ありがとう。

+0

あなたのウェブサーバはどのOSで動作していますか? * nixの場合は、ヘッダから '\ r'エンティティを削除してみてください –

+0

残念ながら、x86_64-redhat-linux-gnu(FastHosts) – Barton

+0

error_log()引数の途中に'$ destination') - これはちょっとあなたの質問のタイプミスですか? (そうでなければ、これは何らかの種類の解析エラーを生成すると思いますか?)個人的には、過去に「MIME-Version」ヘッダーを手動で設定することに問題がありました。問題の原因のようには聞こえませんが、削除しようと思います。 – MrWhite

答えて

0

これは私のために働いています。この解決策がどれほど正確であるかはあまり確かではない。

//create a boundary string. It must be unique so we use the MD5 algorithm to generate a random hash 
$random_hash = md5(date('r', time())); 

//define the headers we want passed. Note that they are separated with \r\n 
$headers = "From: $from_name <$from_mail> \r\nReply-To: $from_mail"; 
//add boundary string and mime type specification 
$headers .= "\r\nContent-Type: text/html; charset=\"iso-8859-1\"; boundary=\"PHP-alt-".$random_hash."\""; 

error_log($sMsg, 1, $emailto, $headers); 

私はそれが他の人に役立つことを望みます。

すべての返信いただきありがとうございます。

1

引数$extra_headersためfunction error_log()のドキュメントは言う:

mail()がするように、このメッセージタイプは同じ内部機能を使用しています。

機能mail()のドキュメントは$additional_headersのために言う:

複数の余分なヘッダがこのされて(私は願って)あなたがCRLFを使う理由CRLF\r\n

で区切る必要があります(\r\n)を使用して、メールヘッダー内の行を区切ります。

しかし、同じドキュメントページにもいくつかの段落の下に、ノートで述べている:メッセージが受信されなかった場合

LF\n)のみを使用してみてください。一部のUnixメール転送エージェント(特に» qmail)は、LFCRLFに自動的に置き換えます(CRLFを使用すると、CRが倍になります)。これは» RFC 2822に準拠していないため、最後の手段である必要があります。

私は約qmailを伝えることはできませんが、電子メールサーバがsendmailだったとき、私は同じ動作に遭遇しました。この問題は、ヘッダーの行末マーカーとしてLF\n)を使用したときに消えました。

+0

'$ headers ="投稿者:[email protected] \ n "; $ headers。= "MIME-Version:1.0 \ n"; $ headers。= "Content-Type:text/html; charset = ISO-8859-1 \ n"; ' メールが届かない。 @axiac – Barton

+0

PHPは 'error_log()'呼び出しを実行してもエラーを報告しますか?そうでない場合は、それは正常に仕事をしたと受け取られていない電子メールの原因はどこか他の場所です。電子メールサーバーのログを確認します。たぶんそれは電子メールを中継することはできません、またはその側に別の問題があります。 – axiac

+0

'mod_fcgid:stderr:PHP警告:error_log():additional_headerに複数の改行または不正な形式の改行があります。 'はい、同じエラーです。 – Barton

関連する問題