发送HTML邮件无效

时间:2016-03-26 23:53:24

标签: php html email html-email

我使用PHP mail()发送一个非常简单的HTML消息。目的是发送包含用户电子邮件地址和验证码的链接。当用户点击该链接时,该网站将收到电子邮件地址和代码,以验证用户的电子邮件地址是否准确。

首先,当它只是HTML / BODY标签,标题和验证电子邮件链接时,它起作用了。我在调试验证过程时多次发送了电子邮件。然后我做了我认为是微小变化的东西,它就退出了工作。如图所示,微小的变化被注释掉了。我添加了一个图像和几行文字。

它不再发送电子邮件了,我没有收到任何警告或错误。我删除了图像,额外的文本,并注释了添加链接,但它仍然无法正常工作。谁能看到我做错了什么? (我改名以保护无辜者。)

function sendEmail($email, $code) {

  $email = str_replace("@","%40",$email);
  $to = $email;
  $subject = 'Email Verification';

  $headers  = "From: " . strip_tags('someone@somewhere.com') . "\r\n";
  $headers .= "CC: \r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

  $message =  "<html><body>\r\n";
  $message .= "<h2>Thank you!</h2>\r\n";
  //$message .= '<img src="http://www.mytestwebsite.com/images/logo.png"><br>';
  //$message .= 'Thank you for registering an account with us. ';
  //$message .= 'Please verify your email address by clicking the button below.<br>';
  //$message .= '<a href="http://www.mytestwebsite.com/verifyemail.php?email='.$email.'&code='.$code.'">Verify Email</a>';
  $message .= "</body></html>\r\n";

  $message = wordwrap($message, 70, "\r\n");
  mail($to, $subject, $message, $headers);

}

如何找出我的设置有什么问题?是否有一个网站会在我的代码中显示错误?

感谢您的帮助! SH

1 个答案:

答案 0 :(得分:3)

似乎阻止您发送电子邮件的唯一原因是:

$email = str_replace("@","%40",$email);

因为您要将其发送到示例%40hostname.com

还要检查是否发送了电子邮件:

if(@mail($to, $subject, $message, $headers))
{
  echo "Mail Sent Successfully";
}else{
  echo "Mail Not Sent";
}