我正处于我的代码的最后部分,即电子邮件验证。但是,电子邮件似乎没有正确发送。为了垃圾邮件,我会用_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
我认为这是我做错的事情,但在经过各种故障排除后我无法发现它。
答案 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);
?>
就是这样。再次发送,一切都应该是超链接。