2017-11-30 7 views
0

私たちはcodeigniterサイトでCIメールライブラリを使用しています。これは、Gmailで適切な形式で電子メールを送信しますが、HotmailやヤフーではそれだけでCodeigniterの電子メール機能が、yahooとライブメールでレンダリングされたhtmlコードを送信できない

は、我々はこれをファイルにHTMLテンプレートを呼び出すHTMLコードを示しています。

emailer_temp.php

<!DOCTYPE> 
<html> 
<head> 
    <title>Registration Confirmation Letter</title> 

    <style><body> 
     <table width="100%" cellspacing="0" cellpadding="0" border="0" style="background:rgb(233, 234, 234) none repeat scroll 0% 0%/auto padding-box border-box;"><tbody><tr><td><div style="margin:0 auto;width:1089px;padding:0px"> 
       <table class="main mce-item-table" width="100%" cellspacing="0" cellpadding="0" border="0" align="center" data-types="background,padding,border-radius,image-settings" data-last-type="image-settings"> 
        <tbody> 
         <tr> 
          <td align="center" class="image image-full element-content element-contenteditable active" style="padding:0;"> 
           <img class="content-image " style="width: 1089px; height: 287px;" src="<?=base_url()."assets/emailer/register.png";?>"> 
          </td> 
         </tr> 
        </tbody> 
       </table> 
    </body> 
    </html> 

コールテンプレートをコントローラのコントローラで

if($ResponseCode=="0"){ 
      if(checkonlinepayment($MerchantRefNo,$Amount)==1){ 
      $data->user = $this->user_model->get_user_profile($userid); 
      $data->accuser = $this->user_model->get_user_accommodation($userid); 
      $data->userpayacc = $this->user_model->get_paydataacc($PaymentID); 
      $this->sendtomail($data->user[0]->email,"Registration Confirmation Letter",$data,"emails/emailer_temp.php"); 
      $mobileno = $data->user[0]->mobileno; 
      $this->sendacctosms($mobileno); 
      } 
     } 

使用sendtomail機能

function sendtomail($userEmail,$subject,$data,$templates){ 
     $config['protocol'] = 'sendmail'; 
     $config['smtp_host'] = 'mail.mysite.com'; 
     $config['smtp_port'] = '25'; 
     $config['smtp_timeout'] = '1'; 
     $config['smtp_crypto'] = 'tls'; 
     $config['smtp_user'] = '[email protected]'; 
     $config['smtp_pass'] = '[email protected]#321'; 
     $config['charset'] = 'utf-8'; 
     $config['mailtype'] = 'html'; 
     $config['priority'] = '1'; 
     $config['wordwrap'] = TRUE; 
     $this->load->library('email',$config); 
     $this->email->from('[email protected]', '2018'); 
     $list = array($userEmail, '[email protected]', '[email protected]'); 
     $this->email->to($list); 
     //$this->email->to($userEmail); // replace it with receiver mail id 
     $this->email->subject($subject); 

     $this->email->set_newline("\r\n"); 
     $this->email->set_header('MIME-Version', '1.0; charset=utf-8'); //must add this line 
     $this->email->set_header('Content-type', 'text/html'); //must add this line 

     $body = $this->load->view($templates,$data,true); 
     $this->email->message($body); 
     $this->email->set_newline("\r\n"); 
     $this->email->send(); 

     } 

質問:なぜ、このコードはYahooとHotmailでレンダリングされたメッセージの代わりにHTMLコードをテキストとして送信していますか?それはGmailで動作します!

$this->email->set_header('MIME-Version', '1.0; charset=utf-8'); 

ノート

答えて

0

最も可能性が高い、それはあなたが使用している$this->email->set_header()問題

であるあなたは、あなたのMIME宣言内セミコロン​​3210を使用しています。

それは次のようになります。

$this->email->set_header('MIME-Version=1.0', 'charset=utf-8'); 
+0

私は同じの$ this - >メール:> SET_HEADERを行う( 'MIME-バージョン= 1.0'、 'のcharset = UTF-8');しかし、まだ同じエラーは、任意の解決策を取得しないでください! –

関連する問題