Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форма обратной связи на сайте, Отсылка введенных в форму данных в utf  
V
    Опции темы
Bulat
Дата 18.12.2013, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Писал по интуиции - не тестировал

Код

sub send_mail  {
  open (MAIL, "| /usr/sbin/sendmail -t");
  print MAIL "From: xxx\@xxx.ru\n";
  print MAIL "To: xxx\@xxxl.ru\n";
  print MAIL "Subject: Оставлен контакт от клиента с сайта \n\n";
  print MAIL "Фамилие, имя, отчество - ".Encode::encode('cp1251', Encode::decode('utf8',$n1))."\n";
  print MAIL "E-mail - ".Encode::encode('cp1251', Encode::decode('utf8',$n2))."\n";
  print MAIL "Телефон - ".Encode::encode('cp1251', Encode::decode('utf8',$n3))."\n";
  print MAIL "Ваше сообщение - ".Encode::encode('cp1251', Encode::decode('utf8',$ar))."\n";
  close MAIL;
}


Суть в Encode::encode('cp1251', Encode::decode('utf8',...))

Цитата(Blanka @  18.12.2013,  00:35 Найти цитируемый пост)
Можно ли в заголовок отправляемого мыла вписать что-то вроде print MAIL "Content-type: text/html; charset=utf-8";  

Можно, но это не даст того эффекта, что вы ожидаете.  smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Blanka
Дата 18.12.2013, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.12.2013

Репутация: нет
Всего: нет



Хоть мне никто и не ответил... 
Но на самом деле, это помогло.
print MAIL "Content-Type: text/plain; charset=utf-8\n"; сразу после строки open (MAIL, "| /usr/sbin/sendmail -t");
Код

sub send_mail  {
open (MAIL, "| /usr/sbin/sendmail -t");
print MAIL "Content-Type: text/plain; charset=utf-8\n";
print MAIL "From: xxx\@xxx.ru\n";
print MAIL "To: xxx\@xxxl.ru\n";
print MAIL "Subject: Оставнен контакт от клиента с сайта \n\n";
print MAIL "Фамилие, имя, отчество - $n1\n";
print MAIL "E-mail - $n2\n";
print MAIL "Телефон - $n3\n";
print MAIL "Ваше сообщение - $ar\n";
close MAIL;
}

PM MAIL   Вверх
tzirechnoy
Дата 29.12.2013, 17:26 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: -1
Всего: 16



Цитата
print MAIL "Subject: Оставнен контакт от клиента с сайта \n\n";


Убивать сразу. Вообще, на почту и i18n в ней есть RFC, они несложно читаются (rfc2045, rfc2046, rfc2047, rfc2048, rfc2049), дополнительно для понимания общих механизмов можно просмотреть довольно муторный и пока вам неактуальный rfc2822, после прочтения стоит посмотреть в rfc-index на updates (которые для Вас тожэ не очень важны, на этом этапе).
Если не умеете читать -- то можно было хотя бы послать пример письма из известной почтовой программы самому себе, экспортировать на диск в какой-нибудь простой mbox, открыть его текстовым редактором и сделать своё в точности как там получилось.

Краткая выжымка: 

1) В заголовках письма при передаче (в т.ч. при передаче в sendmail) все символы должны быть 7-битные. Никакого utf-8 или 1251 туда печатать нельзя. Письма от людей, которые этого не понимают, получают у меня сразу 2/3 скоринга для отправки в спам (и это по-моему умолчание в спамассасине), а если пробираются ко мне -- то с неизвестных адресов сразу отправляются в корзину по причине нечитаемого subject.
Символы в нацыональных кодировках в заголовках кодируются методом, указанным в rfc2047. Например, можно каждое слово, содержащее что-нибудь кроме [0-9a-zA-Z] вместе с следующим пробелом заменяеть на строку =?utf-8?b?этослововbase64?= с пробелом после неё. Что такое base64 и где его берут в perl Вы, я думаю, представляете.

2) Большынство моих почтовых программ проигнорируют заголовок Content-type:, если не будет заголовка MIME-Version: 1.0
Добавьте.

3) Добавьте заголовок Content-transfer-encoding: 8bit 
Систем, которые без этого сломаются, а с этим воспримут -- ужэ очень мало, но во-первых, стандарт требует, а что Вам стоит, к тому жэ небольшой score в спамоловке можно себе скостить.

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1312 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.