Acest articol vă va spune cum să
folosind modulele Perl LWP :: UserAgent și MIME :: Lite descărcare
Pagina HTML și trimiteți-o într-o scrisoare cu
toate imaginile încorporate.
Aplicând această metodă, eu zilnic
Îmi fac glume proaspete în corespondența mea
- Eu sunt prea leneș să urc la Inet în fiecare zi
🙂
- LWP :: UserAgent - clasă personalizată
Agenți WWW
document
timp în secunde
anecdote site / an / an an lună / o an lună day.html
iar din anul ei iau doar ultimele două
cifrele, iar luna și ziua sunt completate la 2
caractere cu zerouri în stânga, dacă este necesar.
O mică diminuare lirică pentru aceia,
care tocmai a început să stăpânească Perl.
Cum se descarcă pagina WEB?
Cum se trimite un mesaj cu atașamente
fișiere?
Luați în considerare pașii programului.
- Definiți adresa URL a documentului
- Descărcați conținutul paginii WEB
- Căutăm și descărcăm tot conținutul
pagina de imagini
valoarea lor absolută
poștă electronică
Punerea în aplicare tehnică a scenariului
descrieți schematic, dacă nu există ceva
înțelegeți - vedeți sursa.
C ANEKDOT.RU toate povestile de ieri. Noi calculam
data - miezul nopții ieri. complement
data cu zerouri în stânga.
$ sutki = 24 * 60 * 60;
($ tek_day, $ tek_month, $ tek_year) = (localtime) [3,4,5];
$ in1 = timelocal (0,0,0, $ tek_day, $ tek_month, $ tek_year);
$ in2 = $ in1- $ sutki;
($ tek_day, $ tek_month, $ tek_year) = (localtime ($ in2)) [3,4,5];
$ tek_month ++; $ tek_year + = 1900;
dacă ($ tek_month<10)
$ tek_month = "0." $ tek_month
>
dacă ($ tek_day<10)
$ tek_day = "0." $ tek_day;
>
$ an_year = substr ($ tek_year, 2, 2);
Descărcați conținutul paginii utilizând
modulul LWP.
dacă ($ url_page) $ url_page =
/ ^ (https? | ftp | fișier | nntp): \ / \ //)
$ req = noua HTTP :: Cerere ('GET' => $ url_page);
cererea mea $ res = $ ua-> ($ req);
$ gabarit = $ res-> conținut;
>
CSS externe = '\ n ";
document HTML =
meu $ analyseur = HTML :: LinkExtor-> nou;
$ analyseur-> parse ($ gabarit);
link-urile mele @l = $ analyseur->; foreach-ul meu $ url (@l)
$ urlAbs = URI :: CuBase-> nou ($ url [2], $ racinePage) -> abs;
chomp $ urlAbs;
dacă ((url [0] eq 'a') ($ url [1] eq 'href') ($ url [2])
(($$ url [2]!
s / \ s href = ["']? $$ url [2] ["']? / href = "$ urlAbs" / gimx;
>
>
Alegeți din document toate imaginile,
descărcați imaginea, determinați tipul și
returnează-l, codificat în MIME.
dacă (((lc ($$ url [0]) eq 'img') || (lc ($$ url [0]) eq
'Src')))
împinge (@mail, create_image_part ($ urlAbs));
>
dacă (lc ($ ur) =
/ jpg $ /)
$ tip = "imagine / jpg";
>
altfel
$ type = "aplicație / x-shockwave-flash";
>
solicitarea mea $ res2 = $ ua-> (cerere HTTP :: noi ('GET' => $ ur));
$ buff1 = $ res2-> conținut;
$ nume fișier = substr ($ ur, rindex ($ ur, "/") + 1, lungime ($ ur));
# codificați imaginea următoare
$ mail = nou MIME :: Lite (Date => $ buff1, Encoding => 'base64', 'Nume fișier' => $ file_name);
$ mail-> attr ('Content-type' => tip $); $ mail-> attr ('Content-Location' => $ ur);
Creați un obiect MIME, specificați de la cine și
căruia îi este scrisoarea, subiectul mesajului. În cazul în care
nu există nici o pagină de imagine - tipul mesajului text / html,
dacă există imagini - multipart / legate.
$ mail = nou MIME :: Lite 'De la' => '[email protected]',
'Pentru' => $ to_email, 'Subject' => $ url_page, 'Data' => $ html; $ mail-> attr ("Tip de conținut"
=> $ content_type);
dacă (@mail)
$ mail-> replace ("Type" => "multipart / related");
# Atașați fiecare imagine
foreach (@mail)>
>
Trimite pagina prin poștă. Poți
utilizați SMTP sau sendmail.
Am pus scenariul nostru în director, de unde
este permisă executarea programelor și
fișier executabil
chmod 750 /usr/local/www/cgi-bin/html_on_email3.pl
Pentru ca în final toate
automatizați, închideți scriptul nostru pe CRON.
Pentru aceasta, adăugați o linie în fișierul / etc / crontab
0 9 * * * root /usr/local/www/cgi-bin/html_on_email3.pl
și în fiecare dimineață la ora 9 citiți proaspătul
anecdote.
În concluzie, vreau să observ că totul se poate face
a fost scrisă într-un mod diferit, mai frumoasă.
Dar programul funcționează, dar mai mult de la ea și
nu este necesar 🙂
Distribuiți acest articol cu prietenii dvs.: