PHPMailer错误 - HTML电子邮件错误

时间:2015-06-14 12:46:58

标签: html parsing phpmailer

我是PHP的新手,最近我在我的系统中使用Composer安装了PHPMailer。我正面临着我想要发送的HTML消息的问题。

我试图发送纯文本,它正常工作并得到PHPmailer的响应。

以下是我的代码:

    <?php 
    require_once 'autoload.php';

    $mail = new PHPMailer;

    $mail->IsSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'email@exapmle.com';
    $mail->Password = 'password';
    $mail->SMTPSecure = 'ssl';
    $mail->Port = 465;

    $mail->From="mailer@example.com";
    $mail->FromName="My site's mailer";
    $mail->Sender="mailer@example.com";
    $mail->AddReplyTo("replies@example.com", "Replies for my site");

    $mail->AddAddress("receiver@example.com");
    $mail->Subject = "Test 1";

    $mail->IsHTML(true);

    $mail->Body = '<html>
    <head>
    <link href="http://alikan.esy.es/Untitled1.css" rel="stylesheet">
    <link href="http://alikan.esy.es/index.css" rel="stylesheet">
    <script src="http://alikan.esy.es/jquery-1.11.1.min.js"></script>
    <script src="http://alikan.esy.es/fancybox/jquery.easing-1.3.pack.js"></script>
    <link rel="stylesheet" href="http://alikan.esy.es/fancybox/jquery.fancybox-1.3.0.css">
    <script src="http://alikan.esy.es/fancybox/jquery.fancybox-1.3.0.pack.js"></script>
    <script src="http://alikan.esy.es/fancybox/jquery.mousewheel-3.0.2.pack.js"></script>
    <script src="http://alikan.esy.es/wwb10.min.js"></script>
    </head>
    <body>
    <div id="wb_Text1" style="position:absolute;left:223px;top:70px;width:250px;height:16px;z-index:0;text-align:left;">
    <span style="color:#000000;font-family:Arial;font-size:13px;"><a href="javascript:displaylightbox('http://www.google.com/index.php',{width:1000,height:1000})" target="_self">This is an email body</a></span></div></body></html>';
    $mail->AltBody="This is text only alternative body.";

    if(!$mail->Send())
    {
       echo "Error sending: " . $mail->ErrorInfo;;
    }
    else
    {
       echo "Letter is sent";
    }
    ?>

这是我尝试发送后得到的错误代码:

    ( ! ) Parse error: syntax error, unexpected 'http' (T_STRING) in C:\wamp\www\vendor\index.php on line 37

1 个答案:

答案 0 :(得分:0)

您使用单引号'打开了正文字符串:

$mail->Body = '<html>...

然后在html字符串中再次使用它来声明参数:

...javascript:displaylightbox('http://www.google.com/index.php',...

如果您的字符串由单引号或双引号分隔,如果它包含相同的字符,则必须对其进行转义,否则php解析器会认为您的字符串在下一次出现的引号时结束。如果您在内容中使用双引号分隔单引号而没有转义是可以的,反之亦然。

修复它以这种方式逃避这两个'

...javascript:displaylightbox(\'http://www.google.com/index.php\',...

编辑:

此外,如果您要发送html正文,请记得在发送邮件之前设置isHTML标志:

$mail->IsHTML(true);