使用PHP Herdeoc功能通过PHPMailer发送包含HTML标记的电子邮件

使用PHP Herdeoc功能通过PHPMailer发送包含HTML标记的电子邮件,php,html,email,Php,Html,Email,当用户填写联系人表单时,我希望用户获得一条HTML消息,消息开头有一个图像,并为带有阴影的框设置一些样式,其中包含用户的姓名和电话 显示的是数字 我尝试使用PHPmailer使用$mail->IsHTML(true)和$mail->msgHTML($message),但消息没有发送 信息如下: $message = <<<STARTMESSAGE <script src='http://maxcdn.bootstrapcdn.com/bootstrap/3.2

当用户填写联系人表单时,我希望用户获得一条HTML消息,消息开头有一个图像,并为带有阴影的框设置一些样式,其中包含用户的姓名和电话 显示的是数字

我尝试使用PHPmailer使用$mail->IsHTML(true)和$mail->msgHTML($message),但消息没有发送

信息如下:

$message = <<<STARTMESSAGE

     <script src='http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js'></script>
     <link href='http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css' rel='stylesheet'>    

     <style type='text/css'>

        .box {
                margin: 40px;


                -moz-box-shadow: 5px 5px 5px rgba(68,68,68,0.6);
                -webkit-box-shadow: 5px 5px 5px rgba(68,68,68,0.6);
                box-shadow: 5px 5px 5px rgba(68,68,68,0.6);


                display: block;
        }

        .content {
            position:relative;
            padding:100px;
            background-color:FFF;
        }

        .h3 {
            text-align:center;
            color:#008800;
        }
     </style>



        <img src='./img/logo.png' class='img-responsive center-block' alt='My website'>

    <h3> Contact Form Submission </h3>

     <div class='box'>
        <div class='content'>

    The following information was submitted: <br/> <br/>



    <strong>Full Name:</strong> $firstname $lastname <br/> <br/>
    <strong>Phone number:</strong> $phone  <br/> <br/>
     </div>
       </div>
STARTMESSAGE;

前几天我遇到了同样的问题。然后我把内联css替换为内部css,效果很好


您也可以这样做(放入内联css),它会起作用。

正如我在评论中所说:

大多数邮件客户端将拒绝/忽略样式表/
和JS链接文件

最好不要使用任何JS,而是使用内联CSS方法进行样式设置

这方面的一个例子是由

memo
正如你在评论中也提到的:

@弗雷德,谢谢你回信。发送邮件服务器对附件大小有限制。上周不是这样,所以我不知道。有人换了,忘了告诉使用它的人。这导致电子邮件无法发送。再次感谢您的时间和帖子克里斯·H

@Fred,同样,使用img src作为完整的http调用对我来说不起作用。我不得不使用:$mail->AddEmbeddedImage(“img/logo.png”、“logo”、“img/logo.png”)$邮件->正文='我的徽标:–Chris H

这是给未来读者的问题。

我不得不使用:

$mail->AddEmbeddedImage("img/logo.png", "logo", "img/logo.png");
$mail->Body = 'My Logo: <img alt="Logo" src="cid:logo"> 

其中$message包含您的邮件内容。此外,正如Fred所说,大多数电子邮件客户端都会删除脚本,因此需要内联CSS样式。

FYI:大多数邮件客户端会拒绝/忽略样式表/和js链接文件。另外,您需要显示更多相关的代码。此外,您的imgsrc需要是一个完整的http调用,而不是本地文件。Heredoc还要求在其结束标识符之后返回回车符。除了Fred ii的评论,HTML电子邮件的所有样式都必须是内联的,比如:
memo
@gibberish True,我本来想添加到我的评论中,但没有时间编辑。Fred,谢谢你的评论。Heredoc在其结束标识符之后有一个回车符。我尝试使用imgsrc作为完整的http调用,但这也不起作用。我将尝试使用乱七八糟的内联样式,因为js和样式表可能是问题所在。乱七八糟,谢谢。我将尝试内联样式。谢谢Suman,我试过了,但问题是邮件服务器附件大小限制。@ChrisH很高兴知道:)继续编码。谢谢Fred,是像你这样的人让Stackoverflow成为寻找答案的首选!
<h1 style="color:red;font-size:28px;">M E M O</h1>
$mail->AddEmbeddedImage("img/logo.png", "logo", "img/logo.png");
$mail->Body = 'My Logo: <img alt="Logo" src="cid:logo"> 
$mail->IsHTML(true);
$mail->Body = $message;