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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция кодирования полей е-мэйла 
:(
    Опции темы
Forza
Дата 12.9.2004, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Подскажите, пожалуйста, функцию кодирования кириллицы в полях From, To и Subject сообщения электронной почты: чтобы, например, из "тест" получалось "=?KOI8-R?B?1MXT1A==?=" (только не для koi8, а для win-1251).

И вообще, как сейчас рекомендуется отправлять Перлом почту (MIME-вложения бинарных файлов не нужны)? Я это делаю так:
Код
use Mail::SendMail;
my %mail = (
From  => $sender,
To  => $recipient,
Subject => "I'm sending you mail",
Message => "This is the message body.\n"
);
sendmail (%mail) or die "sendmail failure sending to $mail{To}: $!\n";

PM MAIL   Вверх
korob2001
Дата 12.9.2004, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Цитата

И вообще, как сейчас рекомендуется отправлять Перлом почту (MIME-вложения бинарных файлов не нужны)?


Почитай здесь: http://forum.vingrad.ru/index.php?showtopic=29108


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Forza
Дата 13.9.2004, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



korob2001,

т.е. лучше использовать именно Net::SMTP, а не Mail::Sendmail? А почему, можно узнать?

PM MAIL   Вверх
korob2001
Дата 13.9.2004, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Цитата

т.е. лучше использовать именно Net::SMTP, а не Mail::Sendmail? А почему, можно узнать?

Я не сказал, что лучше. Лучше, когда способ пересылки соответствует требованиям.
Просто я отправляю почту через sendmail, способом какой привёл ElectricaStorm, другими словами без сторонних модулей.

А вообще тебе решать каким способом её отправлять.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Forza
Дата 13.9.2004, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



korob2001, а что можешь сказать по существу вопроса, если отправлять почту через Mail::Sendmail? Какой функцией кодировать Фром, Ту и Сабджект с кириллицей?
Догадываюсь, что это можно найти в мануалах: просто надеялся, что тут мне быстрее подскажут.

PM MAIL   Вверх
ElectricalStorm
Дата 13.9.2004, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ёперный театр что значит
Цитата
какой функцией кодировать
... ?
выставляете нужную кодировку и вперед
Код


my $msg = "";
$msg .= qq|From: $from\n|;
$msg .= qq|To:   $to\n|;
$msg .= qq|Subject: $subj\n|;
$msg .= qq|Content-Type: text/plain; charset=windows-1251\n|;
$msg .= qq|\n|;
$msg .= qq|$text\n|;
$msg .= qq|\n|;

open MAIL, "|/usr/sbin/sendmail -t";
print MAIL $msg;
close MAIL;






--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
wlad
Дата 13.9.2004, 17:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я вот самописной кодирую...

Код
sub pvd_base64_encode ($;$)
{
   my $res = "";
   my $eol = $_[1];
   $eol = "\n" unless defined $eol;
   pos($_[0]) = 0;
   while ($_[0] =~ /(.{1,45})/gs) {
   $res .= substr(pack('u', $1), 1);
   chop($res);
   }
   $res =~ tr|` -_|AA-Za-z0-9+/|;              
   my $padding = (3 - length($_[0]) % 3) % 3;
   $res =~ s/.{$padding}$/'=' x $padding/e if $padding;
   if (length $eol) {
   $res =~ s/(.{1,76})/$1$eol/g;
   }
   $res=~ s/\s+$//;
   $res;
}


Выглядит это так

Код
$subject="=?windows-1251?B?".pvd_base64_encode($subject)."?=";


И еще в заголовки я бы добавил

Код
$msg .= qq|Content-Transfer-Encoding: 8bit\n|;
$msg .= qq|MIME-Version: 1.0\n|;


Во избежание, так сказать......
  Вверх
Forza
Дата 14.9.2004, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(ElectricalStorm @ 13.9.2004, 16:43)
выставляете нужную кодировку и вперед


Здрасте, приехали! Кодировка, указываемая в Content-Type относится только к телу письма. Если же в Сабж, Ту и Фром оставить некодированную кириллицу, то почтовые клиенты будут это воспринимать непредсказуемо.

Цитата(wlad @ 13.9.2004, 17:07)
Я вот самописной кодирую...

Ну да. Самописную и я могу написать. В институте на лабах писал подобную функцию на Си.

Цитата(wlad @ 13.9.2004, 17:07)

И еще в заголовки я бы добавил
$msg .= qq|Content-Transfer-Encoding: 8bit\n|;
$msg .= qq|MIME-Version: 1.0\n|;

Эти поля заголовка по умолчанию прописаны в Mail::Sendmail.
PM MAIL   Вверх
ElectricalStorm
Дата 14.9.2004, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

use MIME::Base64;

$encoded = encode_base64('Aladdin:open sesame');
$decoded = decode_base64($encoded);



--------------------
Нужно знать инструмент, которым пользуешься
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.0634 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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