当前位置: 首页 > 知识库问答 >
问题:

PHP HTML邮件没有按我的要求工作

南宫奇思
2023-03-14

我创建了重置密码页面,用过的输入他的电子邮件,PHP给他发回重置密钥。邮件可以工作,但在我的gmail帐户中它是纯文本的。我希望它以超文本标记语言出现。

$subject = "Your password reset for {$config['site_name']}";

$message = "<html><body>";

$message .= "<p>Someone on" . $config['site_domain'] . "tried to reset your password.</p>";
$message .= "<p>Please click below link, if you want to reset your password.</p>";

$message .= "<p><a href='" . $config['site_url'] . "/forgot_password.php?key=" . $key . "'>" . $config['site_url'] . "/forgot_password.php?key=" . $key . "</a></p>";


$message .= "<p>Thank you,<br>The Admin - " . $config['site_url'] . " </p>";

$message .= "</body></html>";

// Create email headers             
// 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";

// Additional headers
//$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= "From: " . $config['site_name'] . " <noreply@" . $config['site_domain'] . "> \r\n";
$headers .= "X-Sender: <noreply@" . $config['site_domain'] . "> \r\n";
$headers .= "Reply-To: <noreply@" . $config['site_domain'] . "> \r\n";

mail($input['email'],$subject,$message,$headers);

//update pw_reset field into DATABASE
$stmt = $mysqli->prepare("UPDATE members SET pw_reset = ? WHERE email = ?");
$stmt->bind_param("ss", $key, $input['email']);
$stmt->execute();
$stmt->close();     

共有2个答案

呼延永新
2023-03-14

尝试此功能。成功时返回true

function sendMail($email, $subject, $message)
{
    $supportEmail = 'support@abc.com';
    $from = 'Test Application';
    $msg  = $message;
    $from = str_replace(' ', '-', $from);
    $frm  = $from.' <'.$supportEmail.'>';
    preg_match("<(.*)@(.*\..*)>", $frm, $match);

    ///////////////////Headers/////////////////
    $hdr='';
    $hdr.='MIME-Version: 1.0'."\n";
    $hdr.='content-type: text/html; charset=iso-8859-1'."\n";
    $hdr.="From: {$frm}\n";
    $hdr.="Reply-To: {$frm}\n";
    $hdr.="Message-ID: <".time()."@{$match[2]}>\n";
    $hdr.='X-Mailer: PHP v'.phpversion();
    $x=@mail($email, $subject, $msg, $hdr);
    if($x==0)
    {
        $email=str_replace('@','\@', $email);
        $hdr=str_replace('@','\@',$hdr);
        $x=@mail($email, $subject, $msg, $hdr);
    }
    return $x;
}
颛孙信厚
2023-03-14

您应该这样构造标题:

$headers = 'From: You <you@example.com>' . "\n"; 
$headers .= 'MIME-Version: 1.0' . "\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

请注意,From在MIME和Content之前,只有Content以“\r\n”结尾,其他只是“\n”。

来源(saganwebdesign)

 类似资料:
  • 这是我的设备 这是我的消息正文作者 我的问题是: 为什么结果似乎不正确?我被放在@JsonRootName(“Facility”)上,并且还启用了包装根特性 我错过了什么

  • 我使用Cognito进行用户注册和身份验证。我希望用户能够注册和登录,而无需验证他们的电子邮件地址(对此将有一个单独的过程) 我已将Cognito用户池设置为不需要电子邮件或短信验证,但当我拨打以下电话时,由于帐户未被验证,我仍被返回失败。 我收到的错误消息是用户未被确认。 因此,即使我关闭了验证,如果我没有被验证,API似乎也会拒绝。除了自动验证,真的没有别的办法吗?我不希望这样,在用户过程中的

  • 问题内容: 刚开始使用Node.js。在我的文件中,我正在执行以下操作: app.js 当我在终端中运行时,控制台会弹出,但在浏览器中却显示。 有人可以向我解释为什么在终端中可以正常运行,但在浏览器中却不能正常运行吗? 我正在使用节点的服务我的页面。 问题答案: 在终端中,您正在运行节点应用程序,并且正在运行脚本。与直接在浏览器中运行脚本相比,这是一个非常不同的执行环境。尽管Javascript语

  • 问题内容: 我使用Postman扩展程序发出GET请求并获得响应,但是如果我使用jQuery发出相同的请求,则会收到一个典型错误: XMLHttpRequest无法加载 http://www.rfen.es/publicacion/ranking/resultsBySwimmer.asp?l=020039535&t=&p=0&e=50L-I。所请求的资源上没有“ Access-Control-Al

  • 我在一个简单的网站上工作,但在联系方式上遇到了一些问题,我尝试了所有类型的设置,但都不起作用。 问题是,当我填写表格并按下提交按钮时,它将显示“Message sent successfully”,但我无法接收任何邮件到我的邮件ID。 那我能做什么。。。??? 我的:文件名是 我的 请帮助我...!!

  • 我似乎不能让我的重定向按期望工作。我的目标是: 将http://example.com重定向到https://www.example.com 将http://www.example.com重定向到https://www.example.com 方法3。 现在有点失落