Я хочу передать представление в строку и передать в качестве тела сообщения в электронной почте, используя codeigniter. Какие-либо предложения? - PullRequest
0 голосов
/ 02 мая 2018

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

public function email($data, $type){

$smtp = $this->smtp_model->smtp_data();

$config['protocol']  = 'smtp';
$config['smtp_host'] = $smtp->host;
$config['smtp_port'] = $smtp->port;
$config['smtp_user'] = $smtp->username; 
$config['smtp_pass'] = $smtp->password;
$config['charset']   = 'utf-8';
$config['mailtype']  = 'html';
$config['newline']   = '\r\n';


$this->email->initialize($config);
$this->email->clear(TRUE);
$this->email->from($smtp->from_email, $smtp->from_name);
$this->email->to($data->email);
$this->email->subject(SITENAME.' - '.$type);

// Here it should return html from the view
$mail_message = $this->email_template($data, 'registration');

echo $mail_message;die;//but it is printing empty

$this->email->message($mail_message);
$this->email->send();
}

public function email_template($data, $type){

$email_body = $this->load->view('email/include/head');
// Below are the condition on basis of it view will be selected 
if($type == 'registration')
    $email_body = $this->load->view('email/user_registration', $data);
if($type == 'forgot_password')
    $email_body = $this->load->view('email/forgot_password', $data);

//Need to pass view to variabel which will be returned to above function
$email_body = $this->load->view('email/include/footer');

return $email_body;

}

Ответы [ 2 ]

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

Надеюсь, это поможет вам:

установить третий параметр $this->load->view() в TRUE Если вы установите параметр в TRUE (булево), он вернет данные. Поведение по умолчанию - false,

email_template метод должен быть таким:

public function email_template($data, $type)
{
   $email_body = $this->load->view('email/include/head','',TRUE);
   if($type == 'registration')
   {
      $email_body += $this**strong text**->load->view('email/user_registration', $data,TRUE);
   }
   if($type == 'forgot_password')
   {
        $email_body += $this->load->view('email/forgot_password', $data,TRUE);
   }

   $email_body += $this->load->view('email/include/footer','',TRUE);
   return $email_body;
}

для более: https://www.codeigniter.com/user_guide/general/views.html#returning-views-as-data

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

Вам нужно передать true в качестве третьего аргумента, так как вы храните этот HTML в переменной $email_body.

Надеюсь, это поможет !!

...