2013-07-22 2 views
0

У меня есть контактная форма, которая при отправке отправляет электронное письмо и добавляет данные в базу данных в качестве резервной копии.Codeigniter, html отправка электронной почты, но переменные «не определены»

При тестировании моей электронной почты я действительно получаю html-адрес электронной почты через (woo), но переменные, которые заполняются, не предположительно определены в представлении - что мне не хватает?

Контроллер

Форма проверки здесь ----

Если ошибки это сделать .....

В случае успеха ...

// set the response as successful 
       $respond['result'] = 'true'; 
       $respond['success_message'] = $success_message; 

// set field labels 
       $data['message'] = $message; 
       $data['first_name'] = $first_name; 
       $data['email'] = $email; 

       $html_email = $this->load->view('html_email', $data, true); 

       // send email notification 
        $this->load->library('email'); 
        $this->email->from('email-address', 'Email-address'); 
        $this->email->to('email-address-here');      
        $this->email->subject('subject'); 
        $this->email->message($html_email);   
        $this->email->send(); 

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

       // add contact message to the database 
       $this->contact_model->insert_contact_message($curr_lang, $this->input->post('first_name'), $this->input->post('email'), $this->input->post('message')); 

И в моем HTML электронной почты настраивается с использованием таблиц и объявляет переменные как:

<?=$first_name?> 
<?=$email?> 
<?=$message?> 

Я знаю, что это происходит, поскольку стиль работает, но переменные не тянутся.

Когда я смотрю на своих ошибках, это то, что я получаю от HTML электронной почты:

A PHP Error was encountered 
Severity: Notice 

Message: Undefined variable: message  

ответ

1

У вас не хватает анализатор. Вот как это сделать:

В контроллере, где вы обрабатываете электронную почту:

function send_email() 
    $this->load->library('parser'); 
    $this->load->library('email'); 

    $data = array(
     'name' => $this->input->post('name'), 
     'email' => $this->input->post('email'), 
     'message' => $this->input->post('message) 
    ); 

    $body = $this->parser->parse('path_to/email_view_template', $data, true); 

    //set from, to etc. 
    $this->email->message($body); 
    $this->email->send(); 
} 

Убедитесь, что ваш конфигурационный файл электронной почты настроен для отправки сообщений электронной почты HTML вместо обычного текста.

Затем в почтовом шаблоне вы называете переменные, как это:

<p>You have just received email from {name}. You can contact {name} on {email}. {name} left a message saying: {message}</p> 

Позвольте мне знать, если какие-либо вопросы.

+0

Работал как очарование! Ничего себе будет следить за загрузкой библиотеки парсеров с этого момента - спасибо! – user2212564

+0

, если вы делаете это много в своем коде, загрузите его в свой autoload.php один раз, и он будет включен для всех файлов. – SasaT

+0

Рад, что я могу помочь – SasaT

Смежные вопросы