2013-08-26 4 views
1

У меня проблема, и я действительно в отчаянии. Вот ситуация:Как правильно использовать phpmailer в сочетании с html-email-template в codeigniter?

Я хочу отправить рассылку html электронной почты через codeigniter. Это мой контроллер:

if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class mail extends CI_Controller { 

    function __construct(){ 

     parent::__construct(); 


    } 

    function send_email() { 
     $this->load->view('mail_form'); 
     $this->load->library('phpmailer'); 
     $this->load->helper('url'); 
     if(isset($_POST['btnsend'])) { 
      $mail = new PHPMailer(); // defaults to using php "mail()" 
      $mail->CharSet="UTF-8"; 
      $path=base_url() . 'assets/mail.html'; 
      $body=file_get_contents($path); 
      $mail->SetFrom('[email protected]','blabla.com'); 
      address = $_POST['email']; 
      $mail->AddAddress($address, "Guest"); 
      $mail->Subject = "bla"; 
      $mail->MsgHTML($body); 
      $mail->AddEmbeddedImage('logo.jpg', 'logo', 'logo.jpg','base64','image/jpeg'); 
      if(!$mail->Send()) { 
       echo "Mailer Error: " . $mail->ErrorInfo; 
      } else { 
       echo "A test email sent to your email address '".$_POST['email']."' Please Check Email and Spam too.";  

      } 
     } 


    } 
} 

библиотека P.S.:The PHPMailer должен быть загружен первым. В этом скрипте есть другой индекс функции, который загружает представление.

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

<html> 
    <head> 
     <title>Send Email</title> 
    </head> 
    <body> 
     <form enctype="multipart/form-data" method="post" action="<?php echo base_url('index.php/mail/send_email'); ?>"> 
      <table width="461" height="138" border="1"> 
       <tr> 
        <td width="141">Enter Your Email Here</td> 
        <td width="187"> 
         <input name="email" id="email" type="text" /> 
         <input type="submit" name="btnsend" id="btnsend" value="Send Email" /></td> 
       </tr> 
       <tr> 
        <td colspan="2">&nbsp;</td> 
       </tr> 

      </table> 
     </form> 
    </body> 
</html> 

Шаблон HTML-почты состоит из нескольких переплетенных таблиц. Шаблон отображается отлично при открытии в браузере. Но при отправке по почте он получает клочок. Отформатированный файл хорошо отображается в почтовом клиенте. Изображение логотипа и специальные символы отображаются правильно, но по почте отображается «< meta http-equiv =« Content-Type »content =« text/html; charset = utf-8 ">" в качестве текста (НЕ html-код) перед запуском содержимого . Некоторый контент отсутствует, а некоторые конечные теги ("") удваиваются, хотя в исходном html-файле все правильно.

Итак, где ошибка? Является ли файл_get_contents() - метод неправильным для анализа html-документов? Я уже пытался использовать другой метод с «file_get_html простого html dom (http://simplehtmldom.sourceforge.net/), но не смог запустить эту библиотеку в кодеигниторе. Я боюсь, что я не могу разместить шаблон HTML html, потому что слишком длинный, и контент содержит чувствительные . информация Но я не думаю, что ошибка в HTML файл кто-нибудь имеет наконечник, некоторые ссылки или знает, как этот сценарий может работать

PS:.?! Извините за мой плохой английский

с уважением

ответ

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