Perl mime sau cum să obțineți pagina web prin poștă

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
  • MIME :: Lite - codificator / decodor MIME ușor
  • URI :: URL - lucrul cu adresa URL
  • HTML :: LinkExtor - obține lista tuturor URL-urilor în
    document

  • Ora :: Local - convertește componentele complete
    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
  • Schimbăm referințele referitoare la document
    valoarea lor absolută

  • Trimitem scrisoarea primită
    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.:

    Extensia pentru Chrome, concepută pentru a proteja utilizatorii, fură informații de la LinkedIn și Facebook

    Noul banker IcedID este încă în dezvoltare, dar deja demonstrează tehnici avansate de atac

    Hackerii au ajutat Pentagonul să elimine mii de vulnerabilități

    Câștigătorii din toată țara se vor reuni la Cupa Rusă a CTF din Skolkovo