Работа с электронной почтой - PullRequest
3 голосов
/ 19 января 2012

Мне любопытно узнать, как выполнить эту задачу.

У меня есть функция в моей библиотеке, которая отправляет электронное письмо.Однако для этого требуется параметр $ type, а тип может быть забыт паролем, успешной регистрацией и т. Д.

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

Какой файл я должен создать внутри codeigniter для этого?

Ответы [ 3 ]

4 голосов
/ 19 января 2012

Джефф,

Взгляните на Tank Auth , они уже обрабатывают такие сообщения электронной почты (это небольшой плагин / библиотека CI для аутентификации, восстановления пароля электронной почты и т. Д.).

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

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

Пример из auth.php контроллера (для справки):

/**
 * Send email message of given type (activate, forgot_password, etc.)
 *
 * @param   string
 * @param   string
 * @param   array
 * @return  void
 */
function _send_email($type, $email, &$data)
{
    $this->load->library('email');
    $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->send();
}

Tank Auth - хорошая библиотека и простая в работес.

EDIT

a view просто означает сгенерированный вывод для пользователя, независимо от того, возвращен ли он по EMAIL или HTML-браузерустраница не имеет значения.«текст», о котором вы говорите, является ссылкой на файл, $type.'-txt' вызывает, скажем, $type="hello"; ==> hello-txt страницу в папке просмотра `/ email

, а также config ссылкипотому что tank auth имеет свой собственный файл конфигурации в вашей папке /apps/config/, скрипт ссылается на него для таких вещей, как из и для ответа , также вы видите мультимногоязычная поддержка языка $this->lang->line('auth_subject_'.$type), которая, вероятно, вам не нужна.

1 голос
/ 19 января 2012

Почему бы не создать серию представлений для каждого типа (скажем, в папке с именем 'email_templates') с переменными, где они подходят. Затем вы можете использовать функцию просмотра для получения html, передавая его в функцию электронной почты (обратите внимание на третий параметр, который возвращает html вместо его рендеринга.

$html = $this->load->view('email_templates/forgot_password', $data, TRUE);
1 голос
/ 19 января 2012

Самый простой способ сделать это - создать файл конфигурации для вашей почтовой программы с темами и телами вашей электронной почты.

Загрузите этот файл конфигурации в функцию рассылки.

Руководство пользователя codeigniter о файлах конфигурации содержит все подробности о том, как создавать файлы конфигурации: http://codeigniter.com/user_guide/libraries/config.html

Вореховая скорлупа,

  1. Создайте новый файл в вашей папке application / config.назовите его mail_template
  2. В этот файл добавьте массив конфигурации с необходимыми вам данными, например

    $config['templates']['lost_password']['subject'] = 'Lost Password'; $config['templates']['lost_password']['body'] = 'The body'; [...]

  3. В вашей функции почты,загрузить этот файл с помощью $this->config->load('mail_template', true);
  4. Доступ к вашим переменным с помощью $ templates = $this->config->item('templates', 'mail_template');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...