【问题标题】:PHP 'email sent' but not receivedPHP“已发送电子邮件”但未收到
【发布时间】:2013-07-16 03:25:50
【问题描述】:

坚持一个简单的 php 邮件。任何人都可以发现我哪里出错了。很乐意提供任何帮助。

<?php
$to = "example@website.co.uk";
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
mail($name, $email, $subject, $message);
if(mail($name, $email, $subject, $message)) { 
  echo "E-Mail Sent"; 
} else { 
  echo "There was a problem"; 
}  
?>

【问题讨论】:

  • 一方面,您拨打了两次mail()。另一方面-这不是您称呼邮件的方式-您传递了错误的参数。
  • mail() 如果 PHP 成功地将您的电子邮件移交给外发邮件传递系统,则返回 true。之后,PHP 将完全从进程中删除。如果电子邮件丢失、作为垃圾邮件被丢弃、被退回等等……那不是 PHP 的问题。所以检查你的邮件服务器日志。

标签: php debugging email if-statement


【解决方案1】:

第一条评论已经说明了一切,如果您需要mail() 函数的初学者友好教程,您应该查看PHP Sending E-mails

<?php
$to = "example@website.co.uk";
$name = 'From:'.$_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];

if(mail($to, $subject, $message, $name)) { 
  echo "E-Mail Sent"; 
} else { 
  echo "There was a problem"; 
}  
?>

【讨论】:

  • 您仍在将$message 作为$headers 参数传递。
【解决方案2】:

试试这个吧,它需要防垃圾邮件等...

<?php
     $to      = 'example@example.com';
     $subject = $_POST['subject'];
     $message = $_POST['message'];
     $headers = 'From: contact@yoursite.com';

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

【讨论】:

  • 这究竟如何解决 OP 的问题,而不是消除双重发送?基本上你所做的就是重命名使用的变量。
猜你喜欢
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多