PHP email()函数不能正确发送消息?

时间:2011-10-08 14:57:11

标签: php email

我正处于我的代码的最后部分,即电子邮件验证。但是,电子邮件似乎没有正确发送。为了垃圾邮件,我会用_EMAIL_替换我的电子邮件。

    $hash = genRandomString();
    $link = 'http://www.website.com/verify.php?email=' . $email . '&hash=' . $hash;
    $message = 'Please confirm your email address by click this following link, or copy and pasting it into your web browser.'
    . $link;
    mail($email, 'Account verification for website.com', $message);

所有数据都正确地进入数据库(没有不正确的变量),但电子邮件是这样的:

Please confirm your email address by click this following link, or copy and pasting it into your web browser.
_EMAIL_&hash=0uhcoawgi3qsek8l7rjoheo'>http://www.website.com/verify.php?email=_EMAIL_&hash=0uhcoawgi3qsek8l7rjoheo

我认为这是我做错的事情,但在经过各种故障排除后我无法发现它。

2 个答案:

答案 0 :(得分:1)

默认情况下,mail会发送纯文本电子邮件。如果要发送HTML电子邮件,则必须在邮件中添加适当的标头。请记住,并非所有电子邮件客户端都支持HTML邮件,有些人会禁用它。

话虽如此,如果您仍想发送HTML邮件(很多人都这样做),请按以下方式进行:

mail($To, $Subject, $Message, 'Content-type: text/html');

您的邮件字符串似乎也有问题。 HTML链接如下所示:

<a href="target-url">link-text</a>

所以,试着让你的消息字符串像这样:

$message = 'Please confirm your email address by click this following link, or copy and pasting it into your web browser. <a href="'. $link . '">Activation Link</a>';

答案 1 :(得分:0)

您的PHP邮件内容类型在哪里?要发送HTML邮件,必须设置Content-type标头。

<?php
// message
  $hash = genRandomString();
  $link = 'http://www.website.com/verify.php?email=' . $email . '&hash=' . $hash;
  $message = 'Please confirm your email address by click this following <a href="/link">link</a>.'
. $link;



// To send HTML mail, the Content-type header must be set
   $headers  = 'MIME-Version: 1.0' . "\r\n";
   $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Mail it
  mail($email, 'Account verification for website.com', $message, $headers);

?>

就是这样。再次发送,一切都应该是超链接。