Подтвердить что ты не робот

Отправлять html-почту с помощью codeigniter

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

$config = Array(
'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => '[email protected]',
        '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('[email protected]', 'ddd');

    $list = array('[email protected]');
    $this->email->to($list);
    $this->email->subject('Testing Email');
    $this->email->message($email_body);

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

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

4b9b3361

Ответ 1

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

 $this->email->set_mailtype("html");

Ответ 2

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

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

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

// prepare email
$this->email
    ->from('[email protected]', 'Example Inc.')
    ->to('[email protected]')
    ->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

Настройка типа почты на HTML работает для меня:

$email_setting  = array('mailtype'=>'html');
$this->email->initialize($email_setting);

Ответ 4

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

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

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

Ответ 5

Чтобы отправить сообщение электронной почты в формате 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";
   }

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

наслаждаться!!

Ответ 6

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

Шаг: 1

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

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

Шаг: 2

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

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

Ответ 7

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

Чтобы обойти это, просмотрите мой другой пост.

Ответ 8

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

$configemail = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.gmail.com', //mail.webconsort.com
        'smtp_port' => 465, //5074
        'smtp_user' => '[email protected]', //[email protected]
        '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);
    }

Ответ 9

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

$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();

Ответ 10

$config = array(
    'protocol' => 'mail', // 'mail', 'sendmail', or 'smtp'
    'smtp_host' => 'your host name', 
    'smtp_port' => 465,
    'smtp_user' => '[email protected]',
    'smtp_pass' => 'password',

'smtp_timeout' => 5,
'wordwrap' => TRUE,
'wrapchars' => 76,
'mailtype' => 'html',
'charset' => 'utf-8',
'validate' => TRUE

);
$this->load->library('email', $config);
$htmlContent = '<h1>Sending email via SMTP server</h1>';
$htmlContent .= '<p>This email has sent via SMTP .</p>';

$this->email->to('[email protected]');
$this->email->from('[email protected]','mywebsite');
$this->email->subject('How to send email via SMTP server in CodeIgniter');
$this->email->message($htmlContent);

$this->email->send();

Ответ 11

Ты попробуешь !! он работает для меня после того, как он показал много ошибок, он работает на 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();