在codeigniter中使用SMTP的邮件内容出错
实际上,我的邮件是使用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发送邮件,它可以正常工作。我的错是什么?
答案 0 :(得分:71)
您可以尝试使用此行代码将邮件类型设置为HTML
:
$this->email->set_mailtype("html");
答案 1 :(得分:21)
截至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))
此处,您的views目录中的第一个参数是email_template.php
,第二个参数是要发送到电子邮件模板的数据,您可以将其设置为''
或array()
或{{1}如果没有传递任何动态数据和最后一个参数[]
,请确保获取模板数据而不是输出。
希望这有用。
答案 2 :(得分:3)
将邮件类型设置为HTML
对我有用:
$email_setting = array('mailtype'=>'html');
$this->email->initialize($email_setting);
答案 3 :(得分:2)
尝试手动设置内容类型标题:
$this->email->set_header('Content-Type', 'text/html');
为我解决问题。
答案 4 :(得分:1)
Gmail会阻止您访问自己的帐户。你需要对你的Gmail进行一些更改: -
步骤:1
某些应用和设备使用安全性较低的登录技术 您的帐户更容易受到攻您可以关闭这些应用的访问权限, 我们建议使用,或者如果您想使用它们,请打开访问权限 风险。
步骤:2
启用IMAP状态
启用POP状态
答案 5 :(得分:1)
要发送HTML电子邮件,您首先必须在变量中撰写邮件,然后将该变量传递给codeigniter&#34; $ this-&gt; email-&gt; message()&#34;方法,如下,
$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 :(得分:1)
添加以下代码行:
$this->email->set_mailtype("html");
$this->email->set_newline("\r\n");
$this->email->set_crlf("\r\n");
答案 7 :(得分:0)
我的问题是Codeigniter的全局XSS过滤正在编码一些html标签,如<html>
,因此电子邮件客户端无法再识别它们。
要解决此问题,请查看我的其他post。
答案 8 :(得分:0)
您能否尝试使用此代码,B&#39; 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);
}
答案 9 :(得分:0)
像这样使用..它对我很有用。
$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 :(得分:0)
$message = '
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Johny</td><td>10th</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://mail.example.com',
'smtp_port' => 465,
'smtp_user' => 'noreply@example.com',
'smtp_pass' => 'example@123',
'mailtype' => 'html',
'charset' => 'iso-8859-1'
);
$this->load->library('email', $config);
$this->email->set_mailtype("html");
$this->email->set_newline("\r\n");
$this->email->from('noreply@example.com', 'example');
$this->email->to('example@example.in');
$this->email->subject('Enquiry');
$this->email->message($message);
答案 11 :(得分:-1)
你会试试!!在发现许多错误后,它在我的工作中工作了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();