通过php发送电子邮件不起作用

通过php发送电子邮件不起作用,php,email,html-email,Php,Email,Html Email,我有一段代码无法工作我不明白为什么,我正在尝试将信息发送到数据库并发送到电子邮件地址,它正在将其保存到数据库中,但不会发送到电子邮件,即使它与您成功发送的电子邮件相呼应。谢谢你的帮助 <?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } $to = "edonaghy--@hotmail.co.u

我有一段代码无法工作我不明白为什么,我正在尝试将信息发送到数据库并发送到电子邮件地址,它正在将其保存到数据库中,但不会发送到电子邮件,即使它与您成功发送的电子邮件相呼应。谢谢你的帮助

<?php
  $con = mysql_connect("localhost","root","");
  if (!$con)
  {
    die('Could not connect: ' . mysql_error());
  }

  $to = "edonaghy--@hotmail.co.uk"; 
  $subject = "Dress fitting"; 
  $time = $_REQUEST['time']; 
  $date = $_REQUEST['date']; 
  $headers = "From: $email"; 
  $sent = mail($to, $date, $headers); 
  if($sent) 
  {
    print "Your mail was sent successfully";
  }
  else 
  {
    print "We encountered an error sending your mail";
  }

  mysql_select_db("lr", $con);

  mail("edonaghy--@hotmail.co.uk", $time, $date, $place, $comments);
  $sql="INSERT INTO fitting (time, date, place, comments) VALUES ('$_POST[time]','$_POST[date]','$_POST[place]','$_POST[comments]')";

  if (!mysql_query($sql,$con))
  {
    die('Error: ' . mysql_error());
  }
  echo "Information has been sent!"; 
?>

你用错了邮件

它的用途如下:

mail(to,subject,message,headers,parameters)
所以你的答案是:

$to = "email@hotmail.co.uk"; 
$subject = "Dress fitting"; 
$headers = "From: email@hotmail.co.uk";

$message = "Time:".$_REQUEST['time']."\r\n";
$message .= "Date:".$_REQUEST['date']."\r\n";

mail($to,$subject,$message,$headers);
这是假设您的
$\u请求
正在工作

您的第二个
mail()
正在使用您甚至还没有设置的变量(
$comments
$place
)等

首先设置它们:

$place = $_POST['place'];
$comments = $_POST['comments'];

首先,如果您的本地主机配置不正确,它将不会发送您的电子邮件,因此我建议您在服务器上进行测试(如果有)

有一些库可以帮助您编写更好的代码,如 例如:

require'class.simple_mail.php';
$mailer=新的SimpleEmail();
$time=$_请求['time'];
$date=$_请求['date'];
$message=“我的邮件日期:“$date.”“$time.””;
$send=$mailer->setTo('edonaghy--@hotmail.co.uk','Your Email')
->setSubject('测试消息')
->setFrom('否-reply@domain.com“,”Domain.com“)
->addMailHeader('回复','否-reply@domain.com“,”Domain.com“)
->addMailHeader('Cc','bill@example.com“,”比尔·盖茨“)
->addGenericHeader('Content-Type','text/html;charset=“utf-8”'))
->setMessage($message)
->自动换行(100)
->send();
回音($send)?'已成功发送电子邮件':'无法发送电子邮件';

您确定它没有被发送吗?我的意思是,它可能会在很多地方失败:被SMTP服务器阻止,被目标服务器阻止,被过滤为垃圾邮件。例如,“代表”发送电子邮件(从您不拥有的域强制发送“发件人”电子邮件)是一个非常常见的排除问题。您在这两个地方使用mail()的方式不同。在第一个示例中,您将发送标题作为正文。在第二个示例中,您将发送$place作为标题,但在您给出的示例中,这一点尚未定义。$comments和大概$time和$date也取决于$\u请求变量。你看过邮件手册了吗?我想到的第一个明显的问题是,你是在
localhost
上使用这个吗?它可能没有发送,因为他没有使用
mail()
正确。让我们让他正确使用它,然后问问题。是的,我在本地主机上
require 'class.simple_mail.php';
$mailer = new SimpleMail();

$time = $_REQUEST['time'];
$date = $_REQUEST['date'];
$message = "<strong>My message on date:".$date." ".$time."</strong>";



$send   = $mailer->setTo('edonaghy--@hotmail.co.uk', 'Your Email')
                 ->setSubject('Test Message')
                 ->setFrom('no-reply@domain.com', 'Domain.com')
                 ->addMailHeader('Reply-To', 'no-reply@domain.com', 'Domain.com')
                 ->addMailHeader('Cc', 'bill@example.com', 'Bill Gates')
                 ->addGenericHeader('Content-Type', 'text/html; charset="utf-8"')
                 ->setMessage($message)
                 ->setWrap(100)
                 ->send();
echo ($send) ? 'Email sent successfully' : 'Could not send email';