0

これは、フォームからメールを送信するための更新されたコードです。コードがそれらを読み取っていないように見えますが、フォームの周りにサーバーのphpリクエストを追加しました。テストをプッシュした後、私のコードがサイトにテキストとして表示されています。以前、フォーム マークアップから離れたヘッドで php を呼び出したことを覚えていますが、その構文を思い出せません。

使用しようとしているコードは次のとおりです。

<?php 
if ($_POST["email"]<>'') { 
    $ToEmail = 'chaseoutt@gmail.com'; 
    $EmailSubject = 'Site contact form '; 
    $mailheader = "From: ".$_POST["email"]."\r\n"; 
    $mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
    $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
    $MESSAGE_BODY = "Name: ".$_POST["name"]."<br>"; 
    $MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>"; 
    $MESSAGE_BODY .= "URL: ".$_POST["url"]."<br>"; 
    $MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"])."<br>"; 
    mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
?> 
Your message was sent
<?php 
} else { 
?> 

  <p style="font-style:italic; font-size:12px; font-weigh: normal; margin-top: -89px;     margin-left: 33px;">Contact me written in a different language.</p> <img src="http://www.cameroncashwell.com/imgs/pointing-left.png" style="float: right; margin-right: 140px; margin-top: -89px;">

<div class="form-div"> 
    <form id="fvujq-form1" style="font-size:22px; color:#333;" method="post" action="">
      <div class="form-row"><span class="label">Name *</span><input type="text" name="name" /></div>
      <div class="form-row"><span class="label">Email *</span><input type="text" name="email" /></div>
      <div class="form-row"><span class="label">URL</span><input type="text" name="url" /></div>
      <div class="form-row"><span class="label">Comment *</span><textarea name="comment"></textarea></div>
      <div class="form-row"><input class="submit" type="submit" value="Submit"></div>
    </form>
</div>
    <?php 
}; 
?>

私のエラーはどこですか?

4

2 に答える 2

3

電子メールは、クライアントの JavaScript コードによって送信されません。サーバーから送信されます。ユーザーが送信を押し、すべてのクライアント側の検証に合格すると、フォーム データがサーバーに POST されます。form 要素の "action" 属性は、POST されたフォーム データを受信するサーバー上の URL を指定します。つまり、action="send_email.php" などのようなものです。

サーバー上で電子メールが実際にどのように生成されるかは、使用しているサーバー テクノロジ (PHP、JSP など) に完全に依存します。

したがって、上記のコードには次の 2 つのものがありません。

  1. フォーム内の action= の値、および
  2. データを受信し、実際にメールを送信するサーバー側のコード (PHP ファイルなど) (#1 に対応)
于 2011-12-11T22:02:12.017 に答える
0

そして@smendolaの答えに追加するには...

サーバー側の電子メール送信を並べ替えても、期待どおりの電子メールが届かない可能性があります。一部の電子メール ホスト (実際にはかなりの数) は、送信側サーバーの署名の有効性をチェックします。それが失敗した場合 (署名がない、または自己署名のみの場合)、電子メール ホストは電子メールをスパムとして拒否する可能性があります。

これを回避する 1 つの方法は、PHP のネイティブ send() 関数ではなく、SMTP 経由でフォーム データを送信することです。最も簡単な解決策はPHPMAILERです。たとえば、Gmail アカウント経由でコンテンツを送信できます。

于 2011-12-11T22:47:26.840 に答える