1

求人広告のフォームデータをメールで送信するスクリプトがあります。昨日仕事を辞めたときはうまくいきました。現在、FireFoxでのみ機能しており、OperaとSafariの両方で「メールの送信中にエラーが発生しました。XXXX@XX.COMに通知してください」という「else」ステートメントが表示されます。これは私には意味がありません。

このエラーの原因は何ですか。また、一部のブラウザでは失敗するのに、他のブラウザでは機能するのはなぜですか。

 <script language="javascript">
function submitt()
{
setTimeout('document.paypal.submit()',1000);
}
</script>

<?php 
 $to = "XXX@XXX.com" ; 
 $from = $_REQUEST['email'] ; 
 $name = $_REQUEST['Name'] ; 
 $headers = "From: $from"; 
 $subject = "Classified Tests"; 

 $fields = array(); 
 $fields{"Name"} = "Name";  
 $fields{"email"} = "Email"; 
 $fields{"Phone"} = "Phone"; 
 $fields{"Address"} = "Street Address";
 $fields{"City"} = "City";  
 $fields{"State"} = "State"; 
 $fields{"Zip"} = "Zip Code"; 
 $fields{"Classification"} = "Classification"; 
 $fields{"Ad-Headline"} = "Headline"; 
 $fields{"Ad-Content"} = "Ad Content"; 
 $fields{"Words"} = "Word Count"; 
 $fields{"Weeks"} = "Weeks to Run"; 
 $fields{"WordCount"} = "Total Words"; 
 $fields{"Rate"} = "Word Rate"; 
 $fields{"GrossAmountDue"} = "Gross Amount"; 
 $fields{"NonProfit"} = "Non Profit Ad?"; 

$item_name   = $_POST['item_name'];
$amount   = $_POST['amount'] ; 
$currency_code  = $_POST['currency_code'];
$no_shipping = $_POST['item_number'];
$shipping = $_POST['item_number'];
$cmd   = $_POST['cmd'];
$bn  = $_POST['bn'];
$no_note = $_POST['item_number'];
$lc   = $_POST['lc'];
$business   = $_POST['business'];

 $body = "This Ad has been submitted:\n\n"; foreach($fields as $a => $b){   $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); } 

 if($from == '') {print "You have not entered an email, please go back and try again";} 
 else { 
 if($name == '') {print "You have not entered a name, please go back and try again";} 
 else { 
 $send = mail($to, $subject, $body, $headers); 
 if($send) 
 {print "Your Ad has been submitted, redirecting to paypal."; echo "<SCRIPT LANGUAGE='javascript'>submitt();</SCRIPT>";} 
 else 
 {print "We encountered an error sending your mail, please notify XXX@XXX.com"; } 
 }
}


 ?> 

<form action="https://www.paypal.com/cgi-bin/webscr" id="paypal" target="_self" name="paypal" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="XXXXXXXXXXXX">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="item_name" value="Classified Ad">
<input type="hidden" name="amount" id="Amount" value="">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="button_subtype" value="services">
<input type="hidden" name="no_note" value="0">
<input type="hidden" name="cn" value="Add special instructions to the seller:">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="shipping" value="0.00">
<input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted">
</form>

このエラーの原因は何ですか。また、一部のブラウザでは失敗するのに、他のブラウザでは機能するのはなぜですか。

4

2 に答える 2

2

自分のメールアドレスから。を付けて送信すると機能しますPHP_EOL

mail("XXX@XXX.com", "subject", "body", "From: Me" . PHP_EOL); // 'From' can be anything

PHPmailを参照してください: -手動

于 2012-08-16T20:07:54.170 に答える
1

最初にコメントの提案を試してから、次のJavaScriptコードを使用してみてください。

<script type="text/javascript">
function submit()
{
setTimeout(function(){document.paypal.submit();},1000);
}
</script>

送信コードを文字列ではなく無名関数でラップしました。これは、ここで推奨されています:効率的なJavaScript-Dev.Opera

また、の使用<script language=非推奨typeです。代わりに( )を使用する必要がありますtext/javascriptscript--MDNを参照してください。

于 2012-08-16T18:24:00.430 に答える