1

メール送信PHPスクリプトを作成しました。

1つのフィールド(メッセージフィールド)のみを送信する場合、フォームは正しく機能しているように見えますが、他のフィールドが追加されるとすぐに、フォームは受信トレイに電子メールで送信されなくなります(それでも、フォームは正しく起動され、ありがとうございました。 )。

これが私が現在持っているコードです、これは機能しません

<?php
  $email = $_REQUEST['email'] ;
  $name = $_REQUEST['name'] ;
  $services = $_REQUEST['services'] ;
  $message = $_REQUEST['message'] ;

  if (!isset($_REQUEST['email'])) {
    header( "Location: feedback.html" );
  }
  elseif (empty($email) || empty($message)) {
     header( "Location: error.html" );
 }
  else {
    mail( "info@website.co.uk", "Message via your website!",
           $name, $services, $message, "From: $email" );
    header( "Location: thankyou.html" );
  }
?>

これは前のコードです。これは機能しますが、メッセージのみを表示します

<?php
  $email = $_REQUEST['email'] ;
  $message = $_REQUEST['message'] ;

  if (!isset($_REQUEST['email'])) {
    header( "Location: feedback.html" );
  }
  elseif (empty($email) || empty($message)) {
     header( "Location: error.html" );
 }
  else {
    mail( "info@website.co.uk", "Message via your website!",
          $message, "From: $email" );
    header( "Location: thankyou.html" );
  }
?>

これはフォームのHTMLです。

<form method="post" action="sendmail.php">
    <label>Name:</label> <input name="name" type="text" /><br />
    <label>Email:</label> <input name="email" type="text" /><br />
    <label>What service do you require?:</label>  <input name="services" type="text" /><br />
    <label>Message:</label><br />
    <textarea name="message" rows="15" cols="40">
    </textarea><br />
    <input type="submit" />
</form>
4

4 に答える 4

3

mail()のドキュメントによると、メッセージ本文は単一のパラメータとして渡す必要があります。したがって、次のようになります。

mail( "info@website.co.uk", "Message via your website!", "$name\r\n $services\r\n $message", "From: $email");
于 2013-03-13T10:26:00.483 に答える
1

php.netによると、このmail()関数の正しい使用法は次のとおりです。

<?
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);
?>

追加データ($services)をヘッダーとして送信しようとしています。

$messageあなたと$service>をマージしてみてください

$message = $service . "\r\n\r\n" . $message;
 mail( "info@website.co.uk", "Message via your website!",
      $message, "From: $email" );
于 2013-03-13T10:29:57.280 に答える
0

に変数を追加するだけでは不十分ですmail()公式ドキュメントでわかるように、電子メールの内容を指定するパラメーターは1つだけで、これは3番目のパラメーターになります。

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

メールだけ$messageでなく、すべてを1つの変数に入れて、コンテンツとして関数に渡す必要があります。

$content = $message;
$content .= "\n" . $services;
// etc...
mail($to, $subject, $content);
于 2013-03-13T10:26:08.430 に答える
-1

これを試して

<?php
  $email = $_POST['email'] ;
  $name = $_POST['name'] ;
  $services = $_POST['services'] ;
  $message = $_POST['message'] ;

  if (!isset($_POST['email'])) {
    header( "Location: feedback.html" );
  }
  elseif (empty($email) || empty($message)) {
     header( "Location: error.html" );
 }
  else {
    mail( "info@website.co.uk", "Message via your website!",
           $name . $services. $message .  "From: $email" );
    header( "Location: thankyou.html" );
  }
?>
于 2013-03-13T10:23:52.253 に答える