The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Редактирование заголовка в теле письма., !*! hostel5, 10-Фев-05, 20:50  [смотреть все]
Задача такая, разослать пользователям электронные письма через perl-скрипт. Скрипт запускается путем отправления письма на определенный электронный адрес(через альяс).

пример скрипта:

************************
open(MAIL, "|/usr/sbin/sendmail -t");

while($line=<STDIN>){
$pismo.=$line;
}
print MAIL $pismo;
close(MAIL);
************************

Идея простая, передать через <STDIN> в переменную $pismo все тело письма, во время передачи отредактировать поле "To:" и отправить уже отредактированное письмо. Адресатов будет много(из sql)
В переменную $pismo передается польностью тело письма.

Как изменить $line во время добавление в $pismo, если там попалось значение "To: какойнибудь@email.ru" на "To: email@email.ru"? Могу предположить что необходимо использовать регулярные выражения. Подскажите как поступить в этом случае и как этот кусок кода будет выглядеть.

Фактически задача подменить заголовок при отправки почты.

Делается в целью разослать важную информацию пользователям сервера.

  • Редактирование заголовка в теле письма., !*! PoizOn, 11:00 , 11-Фев-05 (1)
    >Как изменить $line во время добавление в $pismo, если там попалось значение
    >"To: какойнибудь@email.ru" на "To: email@email.ru"? Могу предположить что необходимо использовать регулярные
    >выражения. Подскажите как поступить в этом случае и как этот кусок
    >кода будет выглядеть.

    Ну к примеру формат поля To, такой:
    ...
    To: vasya@mail.ru
    ...

    Самый простой вариант - это while по всем строкам письма, (файла или переменной). например такой:
    Файл letter.txt следующего содержания:
    -----------
    ate: Fri, 11 Feb 2005 03:02:28 GMT
    From: Charlie Root <root@server..ru>
    Message-Id: <200502110302.j1B32SaM094732@server.ru>
    To: root@server.ru
    Subject: server.ru security run output


    Checking setuid files and devices:

    Checking for uids of 0:
    root 0
    toor 0
    ----------------------------
    Код для обработки:
    my $newmail="admin\@server.ru";

    open(LETTER,"letter.txt") || die "$!\n";

    while(<LETTER>) {
    next unless(/^To/);
    s/$_/To: $newmail/;
    print $_,"\n";
    }

    close(LETTER);


    Ну а дальше подгоняйте его под свои нужды.


  • Редактирование заголовка в теле письма., !*! mthawk, 12:40 , 12-Фев-05 (2)
    Для отправки писем можно пользоваться удобной модулем MIME::Lite
    вот простой пример отправки письма всем пользователям почтового сервера
    вариации - за вами.
    #!/usr/bin/perl
    use MIME::Lite;
    open(ALL,"/etc/passwd")||die"Cannot open passwd. $!";
    while(<ALL>)
        {
        ($uname,$pass,$uid,$gid)=split(/:/);
        if ($uid >499)
           {
            $rec="$uname".'@my.domain';
            $msg = MIME::Lite->new(
            From     =>'my.mail@my.domain',
            To       =>"$rec",
            Subject  =>"тема вашего письма",
            Data     => "текст вашего письма"
            );
            $msg->send();
           }
        }
    close(ALL);



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

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