отправьте html почту используя codeigniter - PullRequest
19 голосов
/ 01 февраля 2012

Ошибка в содержимом почты при использовании SMTP в codeigniter На самом деле, моя почта отправляется с тегами HTML, и на ней отображаются теги HTML, которые не верны.

$config = Array(
'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'user@gmail.com',
        'smtp_pass' => '',
        'mailtype'  => 'html', 
        'charset' => 'utf-8',
        'wordwrap' => TRUE

    );
    $this->load->library('email', $config);
    $this->email->set_newline("\r\n");
    $email_body ="<div>hello world</div>";
    $this->email->from('user@gmail.com', 'ddd');

    $list = array('user@gmail.com');
    $this->email->to($list);
    $this->email->subject('Testing Email');
    $this->email->message($email_body);

    $this->email->send();
    echo $this->email->print_debugger();

Если отправляю почту без использования SMTP, все работает нормально. В чем моя ошибка?

Ответы [ 10 ]

71 голосов
/ 01 февраля 2012

Вы можете попробовать эту строку кода, которая установит тип почты для HTML:

 $this->email->set_mailtype("html");
22 голосов
/ 24 июня 2015

По состоянию на CodeIgniter 3.x . Есть много добавленных функций. Этот пример почти такой же с более ранними версиями, но вы можете сделать гораздо больше.

Перейдите по ссылке для документации.

// load email library
$this->load->library('email');

// prepare email
$this->email
    ->from('info@example.com', 'Example Inc.')
    ->to('to@example.com')
    ->subject('Hello from Example Inc.')
    ->message('Hello, We are <strong>Example Inc.</strong>')
    ->set_mailtype('html');

// send email
$this->email->send();

Если у вас есть шаблон дизайна. Вы также можете включить шаблон в message метод, подобный этому ...

->message($this->load->view('email_template', $data, true))

Здесь первый параметр - email_template.php в каталоге представлений, второй параметр - данные, которые будут отправлены в шаблон электронной почты, вы можете установить его '' или array() или [], если не передаются динамические данные и Последний параметр true убедитесь, что вы взяли данные шаблона вместо вывода.

Надеюсь, это полезно.

3 голосов
/ 18 марта 2013

Установка типа почты на HTML у меня работает:

$email_setting  = array('mailtype'=>'html');
$this->email->initialize($email_setting);
2 голосов
/ 21 мая 2018

Чтобы отправить электронное письмо в формате HTML, сначала необходимо скомпоновать свое сообщение в переменной, а затем передать эту переменную методу codeigniter «$ this-> email-> message ()», как показано ниже,

 $this->load->library('email');

 $message = "
     <html>
       <head>
         <title>your title</title>
       </head>
       <body>
         <p>Hello Sir,</p>
         <p>Your message</p>
       </body>
     </html>";

   $this->email->from('email id', 'name');
   $this->email->to('email id');

   $this->email->subject('email subject');
   $this->email->message($message);

   if ($this->email->send()) {
     print "success";
   } else {
     print "Could not send email, please try again later";
   }

надеюсь, это поможет.

наслаждайтесь !!

2 голосов
/ 30 апреля 2018

Попробуйте вручную установить заголовок типа контента, выполнив это:

$this->email->set_header('Content-Type', 'text/html');

Это решит проблему для меня.

1 голос
/ 27 декабря 2017

Gmail запрещает доступ к вашей учетной записи.Вам необходимо внести некоторые изменения в свой адрес электронной почты: -

Шаг: 1

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

Включить менее защищенное приложение

Шаг: 2

Включить статус IMAP
Включить статус POP

Включить статус IMAP и POP

0 голосов
/ 03 мая 2018

U попробует !!он работает для меня после того, как показывает много ошибок, работает на 100%.

        $subject = 'New message.';
        $config = Array(        
            'protocol' => 'sendmail',
            'smtp_host' => 'Your smtp host',
            'smtp_port' => 465,
            'smtp_user' => 'webmail',
            'smtp_pass' => 'webmail pass',
            'smtp_timeout' => '4',
            'mailtype'  => 'html', 
            'charset'   => 'utf-8',
            'wordwrap' => TRUE
        );
        $this->load->library('email', $config);
        $this->email->set_newline("\r\n");
        $this->email->set_header('MIME-Version', '1.0; charset=utf-8');
        $this->email->set_header('Content-type', 'text/html');

        $this->email->from('from mail address', 'Company name ');
        $data = array(
             'message'=> $this->input->post('message')
                 );
        $this->email->to($toEmail);  
        $this->email->subject($subject); 

        $body = $this->load->view('email/sendmail.php',$data,TRUE);
        $this->email->message($body);   
        $this->email->send();
0 голосов
/ 27 декабря 2017

Используйте это как это .. это прекрасно работает для меня.

$this->load->library('email');

$config['charset'] = 'iso-8859-1';

$config['wordwrap'] = TRUE;

$config['mailtype'] = 'html';

$this->email->initialize($config);

$this->email->from($fromemail);

$this->email->to($toemail);

$this->email->subject('Subject');

$this->email->message($html);

$success=$this->email->send();
0 голосов
/ 24 мая 2017

Можете ли вы попробовать с этим кодом, B'z Я могу отправить HTML письмо с этим кодом.

$configemail = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.gmail.com', //mail.webconsort.com
        'smtp_port' => 465, //5074
        'smtp_user' => 'XXXXXXXX@gmail.com', //tororide@webconsort.com
        'smtp_pass' => 'XXXXXXXX', //'T0r0r1d3'
        'mailtype'  => 'html', 
        'charset'   => 'iso-8859-1'
    );

    $CI =& get_instance();

    $CI->load->library('email', $configemail);

    $CI->email->initialize($configemail);
    $CI->email->set_newline("\r\n");

    $CI->email->from($from, $fromName);
    $CI->email->to($to); 

    $CI->email->subject($subject);
    $CI->email->message($body);
    if ($attachments != null && !empty($attachments)){
        foreach($attachments as $a){
            $CI->email->attach($a);
        }
    }

    try{
        $CI->email->send();
        return true;
    }
    catch (Exception $e){
        //var_dump($e);
    }
0 голосов
/ 17 июля 2012

Моя проблема заключалась в том, что глобальная XSS-фильтрация Codeigniter кодировала некоторые html-теги, такие как <html>, чтобы почтовые клиенты больше не могли их распознавать.

Чтобы обойти это, ознакомьтесь с моим другим постом .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...