php邮件是否需要配置才能工作?

php邮件是否需要配置才能工作?,php,email,Php,Email,我试图用PHP编写一个非常简单的邮件表单,但出现了以下错误: PHP注意:未定义索引:在第10行的/var/www/html/sites/send_contact.PHP中,参考: 我的PHP文件如下所示: <?php // send_contact.php // Contact subject $subject =$_POST["$subject"]; // Details $message=$_POST["$detail"]; // Mail of sender $mail_fro

我试图用PHP编写一个非常简单的邮件表单,但出现了以下错误:

PHP注意:未定义索引:在第10行的/var/www/html/sites/send_contact.PHP中,参考:

我的PHP文件如下所示:

<?php // send_contact.php
// Contact subject
$subject =$_POST["$subject"]; 
// Details
$message=$_POST["$detail"];

// Mail of sender
$mail_from=$_POST["$customer_mail"]; 
// From 
$name2=$_POST["$name2"];

$header="From: $mail_from\r\n";

// Enter your email address
$to="joe@mail.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";
}
?>

错误会准确地告诉您出了什么问题:

第10行:

$name2=$_POST["$name2"];
在定义“$name2”之前,您正在使用它

PHP可以替换字符串中的变量:

$var1 = "bar";
echo "foo $var1"; // prints "foo bar"
在HTML中,请使用类似于以下内容的内容:

<input type="...whatever..." name="name2" />

错误是准确地告诉您出了什么问题:

第10行:

$name2=$_POST["$name2"];
在定义“$name2”之前,您正在使用它

PHP可以替换字符串中的变量:

$var1 = "bar";
echo "foo $var1"; // prints "foo bar"
在HTML中,请使用类似于以下内容的内容:

<input type="...whatever..." name="name2" />

最简单的猜测是访问变量时出错

而不是:

$name2=$_POST["$name2"];
使用以下命令:

$name2=$_POST["name2"];
或者,如果您知道差异并有意这样做,请确保使用HTML表单字段的正确名称定义了
$name2
变量

顺便说一句,我强烈建议使用类似于发送电子邮件的库。
您的示例非常简单,mail()应该可以很好地工作,但是对于任何更复杂的内容(例如,具有附件或html)或需要通过SMTP使用外部邮件服务器发送(有或没有身份验证),它将做得更好,并为您节省大量时间

要获得更好的想法,请访问他们的网站:

require_once('../class.phpmailer.php');
$mail = new PHPMailer(true); // the true param means it will throw exceptions on     errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP

try {
  $mail->Host       = "mail.yourdomain.com"; // SMTP server
  $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
  $mail->SMTPAuth   = true;                  // enable SMTP authentication
  $mail->Host       = "mail.yourdomain.com"; // sets the SMTP server
  $mail->Port       = 26;                    // set the SMTP port for the GMAIL server
  $mail->Username   = "yourname@yourdomain"; // SMTP account username
  $mail->Password   = "yourpassword";        // SMTP account password
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->AddAddress('whoto@otherdomain.com', 'John Doe');
  $mail->SetFrom('name@yourdomain.com', 'First Last');
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
  $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';     // optional - MsgHTML will create an alternate automatically
  $mail->MsgHTML(file_get_contents('contents.html'));
  $mail->AddAttachment('images/phpmailer.gif');      // attachment
  $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
  $mail->Send();
  echo "Message Sent OK<p></p>\n";
} catch (phpmailerException $e) {
  echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
  echo $e->getMessage(); //Boring error messages from anything else!
}
require_一次('../class.phpmailer.php');
$mail=新的PHPMailer(true);//true参数意味着它将在错误上抛出异常,这是我们需要捕获的
$mail->IsSMTP();//告诉类使用SMTP
试一试{
$mail->Host=“mail.yourdomain.com”;//SMTP服务器
$mail->SMTPDebug=2;//启用SMTP调试信息(用于测试)
$mail->SMTPAuth=true;//启用SMTP身份验证
$mail->Host=“mail.yourdomain.com”;//设置SMTP服务器
$mail->Port=26;//设置GMAIL服务器的SMTP端口
$mail->Username=”yourname@yourdomain“;//SMTP帐户用户名
$mail->Password=“yourpassword”;//SMTP帐户密码
$mail->AddReplyTo('name@yourdomain.com","最后一次",;
$mail->AddAddress('whoto@otherdomain.com","无名氏",;
$mail->SetFrom('name@yourdomain.com","最后一次",;
$mail->AddReplyTo('name@yourdomain.com","最后一次",;
$mail->Subject='PHPMailer测试主题via mail(),advanced';
$mail->AltBody='要查看邮件,请使用与HTML兼容的电子邮件查看器!';//可选-MsgHTML将自动创建备用电子邮件查看器
$mail->MsgHTML(文件获取内容('contents.html');
$mail->AddAttachment('images/phpmailer.gif');//附件
$mail->AddAttachment('images/phpmailer_mini.gif');//附件
$mail->Send();
echo“消息发送正常

\n”; }捕获(phpmailerException$e){ echo$e->errorMessage();//来自PHPMailer的漂亮错误消息 }捕获(例外$e){ echo$e->getMessage();//来自其他任何内容的无聊错误消息! }
最简单的猜测是访问变量时出错

而不是:

$name2=$_POST["$name2"];
使用以下命令:

$name2=$_POST["name2"];
或者,如果您知道差异并有意这样做,请确保使用HTML表单字段的正确名称定义了
$name2
变量

顺便说一句,我强烈建议使用类似于发送电子邮件的库。
您的示例非常简单,mail()应该可以很好地工作,但是对于任何更复杂的内容(例如,具有附件或html)或需要通过SMTP使用外部邮件服务器发送(有或没有身份验证),它将做得更好,并为您节省大量时间

要获得更好的想法,请访问他们的网站:

require_once('../class.phpmailer.php');
$mail = new PHPMailer(true); // the true param means it will throw exceptions on     errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP

try {
  $mail->Host       = "mail.yourdomain.com"; // SMTP server
  $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
  $mail->SMTPAuth   = true;                  // enable SMTP authentication
  $mail->Host       = "mail.yourdomain.com"; // sets the SMTP server
  $mail->Port       = 26;                    // set the SMTP port for the GMAIL server
  $mail->Username   = "yourname@yourdomain"; // SMTP account username
  $mail->Password   = "yourpassword";        // SMTP account password
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->AddAddress('whoto@otherdomain.com', 'John Doe');
  $mail->SetFrom('name@yourdomain.com', 'First Last');
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
  $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';     // optional - MsgHTML will create an alternate automatically
  $mail->MsgHTML(file_get_contents('contents.html'));
  $mail->AddAttachment('images/phpmailer.gif');      // attachment
  $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
  $mail->Send();
  echo "Message Sent OK<p></p>\n";
} catch (phpmailerException $e) {
  echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
  echo $e->getMessage(); //Boring error messages from anything else!
}
require_一次('../class.phpmailer.php');
$mail=新的PHPMailer(true);//true参数意味着它将在错误上抛出异常,这是我们需要捕获的
$mail->IsSMTP();//告诉类使用SMTP
试一试{
$mail->Host=“mail.yourdomain.com”;//SMTP服务器
$mail->SMTPDebug=2;//启用SMTP调试信息(用于测试)
$mail->SMTPAuth=true;//启用SMTP身份验证
$mail->Host=“mail.yourdomain.com”;//设置SMTP服务器
$mail->Port=26;//设置GMAIL服务器的SMTP端口
$mail->Username=”yourname@yourdomain“;//SMTP帐户用户名
$mail->Password=“yourpassword”;//SMTP帐户密码
$mail->AddReplyTo('name@yourdomain.com","最后一次",;
$mail->AddAddress('whoto@otherdomain.com","无名氏",;
$mail->SetFrom('name@yourdomain.com","最后一次",;
$mail->AddReplyTo('name@yourdomain.com","最后一次",;
$mail->Subject='PHPMailer测试主题via mail(),advanced';
$mail->AltBody='要查看邮件,请使用与HTML兼容的电子邮件查看器!';//可选-MsgHTML将自动创建备用电子邮件查看器
$mail->MsgHTML(文件获取内容('contents.html');
$mail->AddAttachment('images/phpmailer.gif');//附件
$mail->AddAttachment('images/phpmailer_mini.gif');//附件
$mail->Send();
echo“消息发送正常

\n”; }捕获(phpmailerException$e){ echo$e->errorMessage();//来自PHPMailer的漂亮错误消息 }捕获(例外$e){ echo$e->getMessage();//来自其他任何内容的无聊错误消息! }
您的代码似乎没有按预期传递$\u POST数据。我建议您检查$u POST的键,如下所示:

<?php
print_r(array_keys($_POST));
?>


如果它没有显示$name2的值,这意味着您应该修改发送表单数据的网页以发送\u contact.php。

您的代码似乎没有像您所期望的那样传递$\u POST数据。我建议您检查$u POST的键,如下所示:

<?php
print_r(array_keys($_POST));
?>


如果它没有显示$name2的值,这意味着您应该修改发送表单数据的网页以发送_contact.php。

如果您的字段名为subject,那么您可以