首页 > 解决方案 > PHP电子邮件代码不以HTML格式发送电子邮件

问题描述

对不起,有人可以帮忙吗?

我们有一些 PHP 代码通过电子邮件向一个人发送电子邮件,询问我们网站上的服务。用于将标准电子邮件回复以 HTML 格式返回给询问者的电子邮件。但是在 2020 年 6 月的某个时候,虽然我们看不到任何更改,但电子邮件开始发送时没有 HTML 格式,并且基本上显示了 HTML 代码。

下面是创建电子邮件的 PHP 代码部分,但我看不出它有什么问题。因此,如果下面的代码没有问题,是什么导致代码突然中断并更改以 HTML 格式工作的响应电子邮件以开始作为 HTML 代码发送?(或者我看不到的代码有问题吗?)

任何帮助、指示或想法将不胜感激。

    $email_from = 'example@example.co.uk';//<== update the email address
        $email_subject = "Thank You for making enquiry";
        $email_body = '<!DOCTYPE html>
                <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
                <link href="https://fonts.googleapis.com/css?family=Crimson+Text" rel="stylesheet">
                <html>
                <head>
                    <title></title>
                </head>
                    <body>
                        EMAIL CONTENT WILL GO HERE!
                    </body>
                </html>';
    
        $to = $EnquiryEmailAddress;//<== update the email address
        // Always set content-type when sending HTML email
        $headers = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type:text/html;charset=ISO-8859-1' . "\r\n";
    
        $headers .= "From: $email_from \r\n";
        $headers .= "Reply-To: $email_from \r\n";
    
        mail($to,$email_subject,$email_body,$headers); 

标签: phphtmlemail

解决方案


此代码依赖于服务器出站电子邮件是否正确设置。有一个内置在 PHP 中的电子邮件处理器,称为 PHPMailer。我鼓励你看看那个包,它会对你有很大帮助。你可以在这里阅读:https ://github.com/PHPMailer/PHPMailer

其次,我建议您使用 UTF-8 编码您的电子邮件,而不是使用 ISO-8859-1(如果可能)。

此外,如果您在呈现网页时运行邮件发送命令,则邮件发送命令可能需要一些时间。一个好的方法是在用户不等待网页呈现时批量发送电子邮件。这可以通过(例如)将所有出站电子邮件存储在数据库表中并让批处理器处理该表并按顺序发送电子邮件来完成。

最后,正如在对您的问题的评论中提到的那样:请注意电子邮件中的 HTML 非常有限,因此在构建电子邮件 HTML 时必须小心。

祝你好运!


推荐阅读