The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Редактирование заголовка в теле письма."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Редактирование заголовка в теле письма." 
Сообщение от hostel5 emailИскать по авторуВ закладки(ok) on 10-Фев-05, 20:50  (MSK)
Задача такая, разослать пользователям электронные письма через 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"? Могу предположить что необходимо использовать регулярные выражения. Подскажите как поступить в этом случае и как этот кусок кода будет выглядеть.

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

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

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "Редактирование заголовка в теле письма." 
Сообщение от PoizOn Искать по авторуВ закладки on 11-Фев-05, 11:00  (MSK)
>Как изменить $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);


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


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Редактирование заголовка в теле письма." 
Сообщение от mthawk emailИскать по авторуВ закладки(??) on 12-Фев-05, 12:40  (MSK)
Для отправки писем можно пользоваться удобной модулем 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);
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


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

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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