E-kirja töötlemine veebiserveris

Ingmar Aasoja
Jaga:

E-post on internetiajastu kõige tähtsam suhtlusviis. Kuigi läbi aastate on olnud palju katseid e-posti asendamiseks (näiteks MSN Messenger, Skype, Telegram, Facebook ja WhatsApp), on e-post tõestanud oma usaldusväärsust ja püsivust. Selles postituses vaatleme, kuidas saab e-posti kasutada protsesside automatiseerimiseks ja kuidas suunata e-kirju oma veebiserverisse.

E-kirja suunamine veebiaadressile

Zones on võimalik suunata e-kirju mitte ainult teisele e-posti aadressile, vaid ka veebiaadressile (URL kujul https://example.com). See võimaldab e-kirja sisu töödelda veebiserveris.

Postkasti ja suunamisaadressi saab URL’ile suunata seadete all:

Kui e-kiri suunatakse veebiaadressile, siis näeb vastavat rida Apache access logis:

mail.example.com 2024-05-16T17:51:56.636198Z 85.234.244.85 59980 - - "POST / HTTP/1.1" 200 4927 "-" "zone-mta" 61555 host:mail.example.com (jh7ZNijq-0.060)Code language: JavaScript (javascript)

E-kirja sisu saadetakse POST päringuga MIME formaadis väljal mail_to_http, mida saab PHP-s lugeda järgmiselt:

$mail = $_POST['mail_to_http'];Code language: PHP (php)

Nüüd kus kiri on saadetud enda veebiserveris asuvasse rakendusse, on võimalik vastavalt oma äranägemise järgi sellega edasi tegeleda. Kirja sisu lahti võtmine on veidi keerulisem ning toome siinkohal ühe näite, kuidas seda parsida ning mõned tähtsamad osad välja võtta.

E-kirja töötlemine PHP-s

E-kirja sisu lahtivõtmiseks on kõige lihtsam kasutada olemasolevaid teeke. Näiteks saab kasutada php-mime-mail-parser/php-mime-mail-parser teeki, mis nõuab Mailparse PHP moodulit. See moodul on Zone veebimajutuses saadaval, kuid mitte vaikimisi aktiveeritud. Selle saab aktiveerida virtuaalserveri halduses, valides vastava (alam)domeeni PHP seadete all PHP laiendused ja salvestades muudatuse. Muudatus jõustub viie minuti jooksul.

Järgmiseks loome kataloogi nimega mail, mille sisse omakorda kataloogi public. Public kataloogi suuname alam/peadomeeni, kuhu tuleb ka index.php fail.

mail kataloogis initsialiseerime Composer’i:

composer init

Seejärel küsib composer mõned küsimused. Näidise puhul piisab kui vastata ainult Author ja Package Type küsimustele. Esimse puhul võib sisestada oma nime ning teise puhul sobib “project”. Kui composer on initsialiseeritud, siis paigaldame eelmainitud teegi käsuga

composer require php-mime-mail-parser/php-mime-mail-parserCode language: JavaScript (javascript)

Loome public kausta index.php faili järgmise sisuga:

<?php
    
require '../vendor/autoload.php';

use PhpMimeMailParser\Parser;

$mailToHttp = $_POST['mail_to_http'];

// parsime kirja sisu
$parser = new Parser();
$message = $parser->setText($mailToHttp);

// valime soovitud väärtused
$from = $message->getHeader('from');
$subject = $message->getHeader('subject');
$bodyText = $message->getMessageBody();
$bodyHtml = $message->getMessageBody('html');Code language: PHP (php)

Lõplik kataloogistruktuur näeb välja järgmine:

composer.json
composer.lock
public/
    index.php
vendor/
  ...Code language: PHP (php)

Näidisskriptis on vajalikud header’id võetud küll MIME parsimise teel. Lihtsamateks skriptideks on võimalik from/to kätte saad ka otse $_POST['from'] ja $_POST['to'] ning päised on massiivina $_POST['headers'] pesas.

Turvalisus

Veebiskripti turvalisuse suurendamiseks saab lisada HTTP basic auth ja suunamise URL-i koos vastava osaga kujul https://kasutaja:salasõna@example.com.

Kokkuvõte

E-kirjade suunamine ja töötlemine veebiserveris võimaldab automatiseerida mitmesuguseid protsesse. Käesolev juhend näitas, kuidas seadistada e-kirjade suunamine, kuidas neid veebiserveris töödelda ja kuidas kasutada selleks PHP teeke. Edasine sõltub juba konkreetsetest vajadustest, olgu selleks andmete sisestamine andmebaasi või edasisaatmine API kaudu kolmandale teenusele.

Populaarsed postitused

"Pilve pole olemas. On lihtsalt kellegi teise arvuti."

Ardi Jürgens
Mis ikkagi on pilveteenus, kuidas see keerukas süsteem töötab ning kuidas me tulime mõne nädala eest toime ühe jõudlust pärssinud ootamatusega....

Saabub OpenSSL 3 tugi - ka aegunud PHP versioonidele

Ingmar Aasoja
Zone veebimajutusplatvormi aluseks olevat ZoneOS operatsioonisüsteemi ootab ees suurem uuendus: juurutame OpenSSL 3. versiooni. See muutus mõjutab pea...

Uuendame NodeJS ja Python vaikeversioone

Ingmar Aasoja
Juunis 2024 hakkame Zone platvormi järk-järgult l uuendama NodeJS ja Python vaikeversioone, mistõttu palume käesoleva kirjatükiga tähelepanu just...

Veelkord aegunud PHP versioonidest

Kaarel Urva
Mäletatavasti teavitasime aprilli lõpus kliente sellest, et aegunud PHP versioonide kasutamine muutub tasuliseks. Mõistetavasti tuli see uudis paljudele...