Codeigniter e-mail специальные символы - PullRequest
1 голос
/ 22 декабря 2011

Я пытаюсь отправить электронное письмо с библиотекой электронной почты, используя протокол SMTP и специальные символы, такие как áéíó. Проблема в том, что электронная почта отправляется без этих специальных символов даже с использованием конфигурации UTF-8.

Я использую Amazon SES.

Смотри код.

   //Libraries
   $ci->load->library('email');
  //Seta gMail
  $config['protocol'] = "smtp";
  $config['smtp_host'] = "ssl://";
  $config['smtp_user'] = "user";
  $config['smtp_pass'] = "pass";
  $config['smtp_port'] = "465";
  $config['smtp_timeout'] = 30;  
  $config['charset'] = "utf-8";
  $config['wordwrap'] = TRUE;
  $config['validate'] = TRUE;
  $config['mailtype'] = "html";
  $config['newline'] = "\r\n";
  $ci->email->initialize($config);
  //Carrega o modelo do e-mail
  $mensagem = $conteudo;
  //Seta variáveis
  $ci->email->from("cool@email.com", $titulo);
  $ci->email->reply_to('cool@email.com', 'New user');
  $ci->email->set_alt_message($conteudo);
  $ci->email->to($email_destino);
  $ci->email->subject($titulo);
  $ci->email->message($mensagem);
  $ci->email->send();  

Ответы [ 2 ]

0 голосов
/ 29 сентября 2014

Проблема внутренней библиотеки электронной почты CodeIgniter заключается в том, что отправка тела с нелатинскими символами является болью. И если допустимо экранировать некоторые символы европейских языков, нереально экранировать весь текст, состоящий исключительно из нелатинских символов.

Даже если кажется, что некоторые решения работают, вы можете столкнуться с проблемой совместимости с некоторыми почтовыми клиентами.

Лучшее решение - встроить библиотеку PHPMailer, которая намного лучше, чем внутренняя библиотека CI. Вы можете использовать эту оболочку для CodeIgniter и установить для свойства Кодировка значение для печати в кавычках с функцией set_encoding($encoding).

0 голосов
/ 11 мая 2012

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

Это будет работать:

$ci->email->subject(utf8_encode("Special characters : éàî"));

Это не сработает

$ci->email->subject(utf8_encode("Special characters : éàî"));

Для тела письма не уверены, что все специальные символы закодированы правильно

Это будет работать:

$ci->email->message("<p>Special characters : &eacute;&agrave;&icirc;</p>");

Это не сработает

$ci->email->message("<p>Special characters : éàî</p>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...