2015-06-14 5 views
2

Я новичок в PHP и недавно установил PHPMailer с помощью Composer в своей системе. Я столкнулся с проблемой с сообщением HTML, которое я пытаюсь отправить.Ошибка PHPMailer - ошибка электронной почты HTML

Я попытался отправить простой текст, и он отлично работает и получает ответ PHPmailer.

Ниже мой код:

<?php 
    require_once 'autoload.php'; 

    $mail = new PHPMailer; 

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

    $mail->From="[email protected]"; 
    $mail->FromName="My site's mailer"; 
    $mail->Sender="[email protected]"; 
    $mail->AddReplyTo("[email protected]", "Replies for my site"); 

    $mail->AddAddress("[email protected]"); 
    $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 

ответ

0

Вы открыли строку тела с одной цитатой ':

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

И вы используете его снова в своей строке html, чтобы объявить параметр:

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

Если строка ограничена одинарные или двойные кавычки, если она содержит же характер он должен быть экранирован, иначе PHP парсер будет думать, что ваша строка заканчивается в следующем появлении открытия цитаты. Если вы разделите одиночные кавычки, используя двойные в контенте без экранирования, это нормально, и наоборот.

Fix это избежать этих двух ' так:

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

Edit:

Кроме того, если вы отправляете HTML тело, не забудьте установить isHTML флаг перед отправкой почты:

$mail->IsHTML(true); 
+0

Большое спасибо за ваш ответ. Я действительно ценю это. Я пробовал ваше предложение, и эмай отправляется, но полученное сообщение - это всего лишь нет. n-clickable text (plain text) ... –

+0

Вам нужно добавить '$ mail-> IsHTML (true);'. –

+0

Еще раз спасибо, но если вы хорошо проверите источник кода, вы заметите, что я уже включил $ mail-> IsHTML (true); и чтобы вы знали, что я пробовал это в обоих направлениях перед телом $ mail-> Body и после него, и это не сработало ... –

Смежные вопросы