2016-04-09 21 views
0

Yaklaşan bazı geçişler hakkında müşterilerimizin bir listesini ele almak için toplu e-posta aracı yapıyorum. Mevcut toplu posta aracımız bu özel durumda kesilmiyor, sadece bunun yerine bir tane oluşturmayı tercih ettim.PHPMailer HTML göstermiyor

Ben-posta mesajı vücut için bir editör sağlamak için TinyMCE kullanarak ve göndermek için PHPMailer yanında bu geçirerek. Outlook gibi bir istemcide görüntülendiğinde html düzgün görüntülenmiyor dışında her şey harika çalışıyor. $mail->isHTML(true)'un ayarlandığından kesinlikle emin oldum, bu yüzden şimdi kaybettim.

bulk_mail_sender() işlevindeki $ mesajının değerini ve doğru olduğunu ekledim. Bu dizeyi $ mail-> Gövde olarak yapıştırırsam çalışır. Ancak $ mail-> Gövde olarak ayarlanmış $ mesajım varsa, her çeşit garip karaktere dönüşür.

İleti Kaynak:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">&lt;p&gt;Hi there,&lt;/p&gt; 
&lt;p&gt;Â&nbsp;&lt;/p&gt; 
&lt;p&gt;What is up foo&lt;/p&gt; 

Kodu: Şimdiye kadar TinyMCE içinde bu düzeltmek için bir yol bulamadı iken

function bulk_mail_sender($vars, $emails, $subject, $message) 
{ 
    foreach ($emails as $email) 
    { 
     $mail = new PHPMailer; 
     $mail->isSMTP();         // Set mailer to use SMTP 
     $mail->SMTPAuth = true;        // Enable SMTP authentication 
     $mail->Host = $vars['opt_host'];     // Specify main SMTP Server 
     $mail->Port = $vars['opt_port'];     // TCP port 
     $mail->Username = $vars['opt_user'];    // SMTP Username 
     $mail->Password = $vars['opt_pass'];    // SMTP Password 
     $mail->SMTPSecure = $vars['opt_type'];    // Enable TLS/SSL encryption 

     $mail->setFrom($vars['opt_sender_email'], $vars['opt_sender_name']); 

     $mail->addAddress($email); 
     $mail->addReplyTo($vars['opt_sender_email'], $vars['opt_sender_name']); 
     $mail->isHTML(true); 

     $mail->Subject = $subject; 
     $mail->Body = $message; 

     if(!$mail->send()) 
     { 
      echo 'Message failed to send to ' . $email; 
      echo 'Mailer Error: ' . $mail->ErrorInfo . '</br></br>'; 
     } 
     else 
     { 
      echo 'Message has been sent to ' . $email . '</br>'; 
     } 
    } 
} 

function bulk_mail_output($vars) 
{ 
    if (!empty($_POST)) 
    { 
     $subject = $_POST['subject']; 
     $message = $_POST['message']; 

     $emails = $_POST['emails']; 
     $emails = explode(PHP_EOL, $emails); 

     bulk_mail_sender($vars, $emails, $subject, $message); 
    } 
    else 
    { 
     echo '<form method="POST" action="">'; 

     echo 'Subject: <input type="text" name="subject" id="subject"></br></br>'; 
     echo '<textarea rows="10" cols="100" name="message" id="message"></textarea></br></br>'; 

     echo '<h3>Email Addresses</h3>'; 
     echo '<textarea rows="10" cols="100" name="emails" id="emails"></textarea></br></br>'; 

     echo '<input type="submit" value="Submit">'; 

     echo '</form>'; 

     echo '<script language="javascript" type="text/javascript" src="../includes/jscript/tiny_mce/tiny_mce.js"></script> 
       <script language="javascript" type="text/javascript"> 

        tinyMCE.init({ 
         mode: "exact", 
         elements: "message", 
         theme: "advanced", 
         entity_encoding: "raw", 
         convert_urls: false, 
         relative_urls: false, 
         plugins: "style,table,advlink,inlinepopups,media,searchreplace,contextmenu,paste,directionality,visualchars,xhtmlxtras", 
         theme_advanced_buttons1: "cut,copy,paste,pastetext,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect,|,search,replace", 
         theme_advanced_buttons2: "bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,|,forecolor,backcolor,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,media,|,ltr,rtl,cleanup,code,help", 
         theme_advanced_buttons3: "", // tablecontrols 
         theme_advanced_toolbar_location: "top", 
         theme_advanced_toolbar_align: "left", 
         theme_advanced_statusbar_location: "bottom", 
         theme_advanced_resizing: true 
        }); 

        function toggleEditor(id) 
        { 
         if (!tinyMCE.get(id)) 
          tinyMCE.execCommand(\'mceAddControl\', false, id); 
         else 
          tinyMCE.execCommand(\'mceRemoveControl\', false, id); 
        } 
       </script>'; 
    } 
} 
+0

Asıl sorunun ne olduğunu söyleme - "düzgün görüntülenmiyor", devam etmek için fazla bir şey yok. Varlıklar veya Unicode içeriği iyi çalışmalı, bu yüzden muhtemelen başka bir şey yanlış yapıyorsunuz. Ayrıca html işleme söz konusu olduğunda bu bakış açısının bir önemsiz yığını olduğunu. – Synchro

cevap

0

, geçici çözüm sadece benim $ mesajı değişkeni sarmak için oldu kullanılır Posta gövdesine ayarlarken html_entity_decode işlevi. TinyMCE'den verileri ilk defa düzgün bir şekilde iletmeyi tercih ederim, ancak kodlama, bir nedenle tamamen devre dışı bırakılamaz.

$mail = new PHPMailer; 
$mail->CharSet = "UTF-8"; 
$mail->isSMTP();         // Set mailer to use SMTP 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Host = $vars['opt_host'];     // Specify main SMTP Server 
$mail->Port = $vars['opt_port'];     // TCP port 
$mail->Username = $vars['opt_user'];    // SMTP Username 
$mail->Password = $vars['opt_pass'];    // SMTP Password 
$mail->SMTPSecure = $vars['opt_type'];    // Enable TLS/SSL encryption 

$mail->setFrom($vars['opt_sender_email'], $vars['opt_sender_name']); 
$mail->addReplyTo($vars['opt_sender_email'], $vars['opt_sender_name']); 

$mail->addAddress($email); 
$mail->isHTML(true); 

$mail->Subject = $subject; 
$mail->Body = html_entity_decode($message); 

if(!$mail->send()) 
{ 
    echo 'Message failed to send to ' . $email; 
    echo 'Mailer Error: ' . $mail->ErrorInfo . '</br></br>'; 
} 
else 
{ 
    echo 'Message has been sent to ' . $email . '</br>'; 
}