Sending HTML Email Results Using an HTML Source (Codeigniter Email Class)

I am having problems with email sent through an email class in Codeigniter, displaying the HTML source code in the email message instead of the displayed HTML view. For testing, I currently have CI on XAMPP on Windows and using Gmail SMTP to send to the same gmail address.

The function sending the email is as follows:

$config = Array( 'protocol' => 'smtp', 'smtp_host' => 'ssl://smtp.googlemail.com', 'smtp_port' => 465, 'smtp_user' => ' myaccountname@gmail.com ', 'smtp_pass' => 'mygmailpassword', ); $this->load->library('email', $config); $this->email->from($this->config->item('webmaster_email', 'tank_auth'), $this->config->item('website_name', 'tank_auth')); $this->email->reply_to($this->config->item('webmaster_email', 'tank_auth'), $this->config->item('website_name', 'tank_auth')); $this->email->to($email); $this->email->subject(sprintf($this->lang->line('auth_subject_'.$type), $this->config->item('website_name', 'tank_auth'))); $this->email->message($this->load->view('email/'.$type.'-html', $data, TRUE)); $this->email->set_alt_message($this->load->view('email/'.$type.'-txt', $data, TRUE)); $this->email->set_newline("\r\n"); // require this, otherwise sending via gmail times out $this->email->send(); 

No problem sending text version. The loaded view is an html file that will be sent by email.

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head><title>Welcome to <?php echo $site_name; ?>!</title></head> <body> <div style="max-width: 800px; margin: 0; padding: 30px 0;"> <table width="80%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="5%"></td> <td align="left" width="95%" style="font: 13px/18px Arial, Helvetica, sans-serif;"> <h2 style="font: normal 20px/23px Arial, Helvetica, sans-serif; margin: 0; padding: 0 0 18px; color: black;">Welcome to <?php echo $site_name; ?>!</h2> Thanks for joining <?php echo $site_name; ?>. We listed your sign in details below, make sure you keep them safe.<br /> To verify your email address, please follow this link:<br /> <br /> <big style="font: 16px/18px Arial, Helvetica, sans-serif;"><b><a href="<?php echo site_url('/auth/activate/'.$user_id.'/'.$new_email_key); ?>" style="color: #3366cc;">Finish your registration...</a></b></big><br /> <br /> Link doesn't work? Copy the following link to your browser address bar:<br /> <nobr><a href="<?php echo site_url('/auth/activate/'.$user_id.'/'.$new_email_key); ?>" style="color: #3366cc;"><?php echo site_url('/auth/activate/'.$user_id.'/'.$new_email_key); ?></a></nobr><br /> <br /> Please verify your email within <?php echo $activation_period; ?> hours, otherwise your registration will become invalid and you will have to register again.<br /> <br /> <br /> <?php if (strlen($username) > 0) { ?>Your username: <?php echo $username; ?><br /><?php } ?> Your email address: <?php echo $email; ?><br /> <?php if (isset($password)) { /* ?>Your password: <?php echo $password; ?><br /><?php */ } ?> <br /> <br /> Have fun!<br /> The <?php echo $site_name; ?> Team </td> </tr> </table> </div> </body> </html> 

Any ideas on how to get sent HTML messages to be displayed instead of displaying its source code?

+6
source share
5 answers

Try adding mailtype to the configuration:

 $config = Array( 'mailtype' => 'html', ...etc... ); 

See http://codeigniter.com/user_guide/libraries/email.html

+26
source

try it

 $this->email->set_mailtype("html"); 
+15
source

Add these two lines after loading your codeigniter mail library

 $this->email->set_header('MIME-Version', '1.0; charset=utf-8'); $this->email->set_header('Content-type', 'text/html'); 

full configuration: fooobar.com/questions/272160 / ...

+4
source

Add the line commented out in the example below:

 $config['protocol'] = 'sendmail'; $config['mailpath'] = '/usr/sbin/sendmail'; $config['charset'] = 'iso-8859-1'; $config['wordwrap'] = TRUE; $config['mailtype'] = 'html'; // Append This Line $this->email->initialize($config); 
+3
source
 Set $config['protocol'] = "sendmail"; 

fixed that for me

+1
source

Source: https://habr.com/ru/post/890016/


All Articles