2

私はPHPを初めて使用し、オンラインでスクリプトを例として取り上げました。Xamppをセットアップし、phpがインストールされて機能しています。hMailServerを使用してローカルメールサーバーをセットアップしようとしましたが、それが正しくセットアップされているかどうかは完全にはわかりません。とにかく、ここにPHPコードがあります:

<?php

$subject="";
$detail="";
$customer_mail="";
$name="";

// Contact subject
$subject ="$subject"; 

// Details
$message="$detail";

// Mail of sender
$mail_from="$customer_mail"; 

// From 
$header="from: $name <$mail_from>";

// Enter your email address
$to ='sean.myers92@gmail.com';
$send_contact=mail($to,$subject,$message,$header);

// Check, if message sent to your email 
// display message "We've recived your information"
if($send_contact){
echo "We've recived your contact information";
}
else {
echo "ERROR";
}
?>

そして対応するHTMLコード:

<table width="400" border="0" align="center" cellpadding="3" cellspacing="1">
<tr>
<td><strong>Contact Form </strong></td>
</tr>
</table>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1">
<tr>
<td><form name="form1" method="post" action="test.php">
<table width="100%" border="0" cellspacing="1" cellpadding="3">
<tr>
<td width="16%">Subject</td>
<td width="2%">:</td>
<td width="82%"><input name="subject" type="text" id="subject" size="50"></td>
</tr>
<tr>
<td>Detail</td>
<td>:</td>
<td><textarea name="detail" cols="50" rows="4" id="detail"></textarea></td>
</tr>
<tr>
<td>Name</td>
<td>:</td>
<td><input name="name" type="text" id="name" size="50"></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><input name="customer_mail" type="text" id="customer_mail" size="50"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Reset"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>

フォームを送信すると、エラーが発生します。警告:mail()[function.mail]:SMTPサーバーの応答:530SMTP認証が必要です。何が間違っている可能性があるのか​​?ありがとう

4

5 に答える 5

5

hMailServerのフォーラムから:http ://www.hmailserver.com/forum/viewtopic.php?f = 6&t = 22039

IP範囲について。マイコンピュータのIP範囲に移動し、ローカルから外部および/または外部から外部への認証のチェックを外します。

于 2012-11-22T19:55:17.227 に答える
0

Xampp にはメール サーバーが組み込まれていません。セットアップする必要があります。

PHP のメールの問題、送信できない

XAMPP でのメール送信エラー

別の stmp サーバー (つまり googlemail) と PEAR:Mail や swiftmailer などのメール ライブラリを使用して、ログイン資格情報で imap/smtp 接続を確立します。

于 2012-07-09T11:26:08.333 に答える
0

構成されていないその php は、php.ini ルックアップで有効な smtp サーバーを指すように更新できます。これは Windows 専用です。パスワードをサポートしていないか、 http://[mail function]から入手できる phpmailer を使用しないため、ローカルでメール サーバーをセットアップすることをお勧めします 。ログインをサポートするsourceforge.net/projects/phpmailer

于 2012-07-09T11:39:29.290 に答える
0

このリンクhttp://code.google.com/a/apache-extras.org/p/phpmailer/downloads/listから最新の phpmailer をダウンロードし、その gmail チュートリアルを読んでください。私にとっては、ローカルシステムからも機能します:) +非常に簡単なチュートリアルです。

于 2012-07-09T11:42:32.007 に答える
-2

/** * エラー文字列を返すか、成功した場合は null を返します */


function authSendEmail($sendto, $replyto, $subject, $message, $namefrom=""){
//SMTP + サーバーの詳細
/* * * * 構成の開始 * * * /
$smtpServer = "mail.server.com";
$port = "25";
$timeout = "5";
$username = "test@server.com";
$password = "テスト";
$newLine = "\r\n";
/
* * * 設定終了 * * * * */

  /*
  2ХХ — команда успешно выполнена
  3XX — ожидаются дополнительные данные от клиента
  4ХХ — временная ошибка, клиент должен произвести следующую попытку через некоторое время
  5ХХ — неустранимая ошибка
  */


  //0    //Connect to the host on the specified port
      $smtpConnect = fsockopen($smtpServer, $port, $errno, $errstr, $timeout);
      $smtpResponse = fgets($smtpConnect, 1024);
      if(empty($smtpConnect) || $smtpResponse{0} !='2' )
      {
        return  "Failed to connect: $smtpResponse";
      }


  //1    //hello server
      fputs($smtpConnect,"EHLO servername" . $newLine);
      $smtpResponse = fgets  ($smtpConnect);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";

      $smtpResponse = fgets  ($smtpConnect);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";

      $smtpResponse = fgets  ($smtpConnect);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";
      $smtpResponse = fgets  ($smtpConnect);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";
      $smtpResponse = fgets  ($smtpConnect);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";
      $smtpResponse = fgets  ($smtpConnect);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";

  //2    //Request Auth Login
      fputs($smtpConnect,"AUTH LOGIN" . $newLine);
      $smtpResponse = fgets($smtpConnect, 1024);
      if($smtpResponse{0} !='3' )
        return "Failed: $smtpResponse";

  //3    //Send username
      fputs($smtpConnect,  base64_encode($username).$newLine);
      $smtpResponse = fgets($smtpConnect, 1024);
      if($smtpResponse{0} !='3' )
        return "Authentification failed: $smtpResponse";

  //4    //Send password
      fputs($smtpConnect,  base64_encode($password).$newLine);
      $smtpResponse = fgets($smtpConnect, 1024);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";


  //6    //Email From
      fputs($smtpConnect, "MAIL FROM: ".$username . $newLine);
      $smtpResponse = fgets($smtpConnect, 1024);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";

  //7    //Email To
      fputs($smtpConnect, "RCPT TO: ".$sendto . $newLine);
      $smtpResponse = fgets($smtpConnect, 1024);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";

  //8    //The Email
      fputs($smtpConnect, "DATA" . $newLine);
      $smtpResponse = fgets($smtpConnect, 1024);
      if($smtpResponse{0} !='3' )
        return "Failed: $smtpResponse";

  //9 //Construct Headers
      $headers = "MIME-Version: 1.0" . $newLine;
      $headers .= "Content-type: text/html; charset=windows-1251" . $newLine;
      $headers .= "To: Администратор <$sendto>" . $newLine;
      $headers .= "From: $namefrom <$username>" . $newLine;
      $headers .= "Reply-To: $namefrom <$replyto>" . $newLine;
      $headers .= "X-Mailer: ".phpversion(). $newLine;

      fputs($smtpConnect, "Subject: $subject\n$headers\n\n$message\n.\n" );
      $smtpResponse = fgets($smtpConnect, 515);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";


  //10    // Say Bye to SMTP
      fputs($smtpConnect,"QUIT" . $newLine);
      $smtpResponse = fgets($smtpConnect, 1024);
      if($smtpResponse{0} !='2' )
        return "Failed: $smtpResponse";

      return false;
}

?>
于 2012-07-09T11:54:38.067 に答える