The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как отправить письмо с помощью Net::SMTP_auth"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"Как отправить письмо с помощью Net::SMTP_auth"  +/
Сообщение от qwer email(ok) on 23-Мрт-11, 09:42 
Здравствуйте, подскажите пож-та, как отправить письмо с помощью Net::SMTP_auth.
Точнее сама отправка работает, но проблемы с кириллицей.
Кусок кода у меня такой:
Массив @send типа этого (логин@rambler.ru,smtp.rambler.ru,"тут пароль")
    $smtp = Net::SMTP_auth->new($send[1],Debug => 0);
    $smtp->auth('LOGIN', $send[0], $send[2]);
    $smtp->mail($send[0]);
    $smtp->to($kuda); - кому отправляем
    $smtp->data(); # Start the mail
    $smtp->datasend("Content-Type: 'text/plain; charset=windows-1251'\n");
    $smtp->datasend("To: $kuda\n");
    $smtp->datasend("From: $send[0]\n");
    $subj=encode_base64("Тема письма");
    chomp($subj);
    $subj = "=?windows-1251?B?".$subj."?=";
    $smtp->datasend("Subject:  $subj");
    $smtp->datasend("\n");
    #$smtp->datasend(@message);
    $smtp->dataend(); # Finish sending the mail
    if ($smtp->dataend()){
     print TMP "E-mail from $send[0] to $kuda sent\t\t\tOK!\n";
     print "E-mail from $send[0] to $kuda sent\t\t\tOK!\n";
    }
    else{
     print TMP "E-mail from $send[0] to $kuda sent\t\t\tFAIL!\n";
     print "E-mail from $send[0] to $kuda sent\t\t\tFAIL!\n";
    };  
   $smtp->quit;
В общем отправляет, даже тема нормально читается, но вот тела нет
Что не так, не подскажете?
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как отправить письмо с помощью Net::SMTP_auth"  +/
Сообщение от cryo (ok) on 23-Мрт-11, 15:00 
Так у вас закомментарен кусок посылающий само тело:
    $smtp->datasend("\n");
    #$smtp->datasend(@message);
    $smtp->dataend(); # Finish sending the mail

Ну и массив надо бы пребразовать в строку:

   $smtp->datasend("\n");
    $smtp->datasend(join("\n", @message));
    $smtp->dataend(); # Finish sending the mail

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Как отправить письмо с помощью Net::SMTP_auth"  +/
Сообщение от qwer email(ok) on 23-Мрт-11, 15:21 
Нет вы меня не поняли!
Кусок я поставил правильный, закомментировал только потому, что тестировал разные приемы с кириллицей.
Англоязычный текст уходит и в таком виде
  $smtp->datasend(@message);
и в таком
  $smtp->datasend("asdjklfhaskld\njahsdfsdhj\n");
Проблема как раз с кириллицей.
Может есть другие способы для отправки сообщений именно с SMTP авторизацией.
Пробовал через MAIL::SEnder - но тоже ничего не вышло.
с кодировкой вообще жесть какая то


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Как отправить письмо с помощью Net::SMTP_auth"  +/
Сообщение от NuINu (??) on 25-Мрт-11, 20:42 
>[оверквотинг удален]
> Кусок я поставил правильный, закомментировал только потому, что тестировал разные приемы
> с кириллицей.
> Англоязычный текст уходит и в таком виде
>   $smtp->datasend(@message);
> и в таком
>   $smtp->datasend("asdjklfhaskld\njahsdfsdhj\n");
> Проблема как раз с кириллицей.
> Может есть другие способы для отправки сообщений именно с SMTP авторизацией.
> Пробовал через MAIL::SEnder - но тоже ничего не вышло.
> с кодировкой вообще жесть какая то

Закодируйте тело письма с кирилицей в Base64 и будет вам счастье. в хедере только не забудьте указать кодировку письма.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру