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-parser
Code 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.