Pereiti prie pagrindinio turinio

Laiškų siuntimas per komandinę eilutę (terminalą)

Atnaujinta prieš daugiau kaip savaitę

Nors internete yra apstu įvairių nemokamų el. pašto paslaugų tiekėjų su patogia vartotojo sąsaja, kuriuos naudojame kasdien, kaip Gmail, Yahoo, RediffMail ir pan., tačiau kartais gali prireikti ir laiškų siuntimo funkcijos tiesiai iš komandinės eilutės. Pavyzdžiui, jeigu norite siųsti laiškus pasinaudojant skriptais, periodinėmis užduotimis ar shell'u.

Komandos sendmail, mail ir mutt naudojamos pvienių laiškų siuntimu. Naudojant PHP skriptus galima siųsti didesnius kiekius laiškų iš komandinės eilutės.

Šioje pamokoje pateiksime informaciją su apie kelis dažniausiai naudojamus būdus siųsti laiškas per Linux komandinę eilutę.

0. Preliminarūs reikalavimai

  • Linux distribucijos serveris.

1. Naudojant sendmail komandą

Sendmail yra viena populiariausių pašto siuntimo tarnybų Linux serveriuose. Šios programos diegimą bei konfogūravimą rasite kitoje mūsų pamokoje. Naudojant sendmail komandą galima siųsti laišksu tiesiai per komandinę eilutę. Visų pirmą susikurkite failą, kuriame bus nurodoma laiško tema ir tekstas:

nano /tmp/email.txt

Jame įveskite, kaip pavyzdžiui:

Subject: Tema

Tekstas

Dabar galite atlikti laiško siuntimą per komandinę eilutę:

sendmail [email protected] < /tmp/email.txt

Pastaba: laiškai nėra siunčiami, jeigu naudojami lietuviški simboliai.

2. Naudojant mail komandą

mail yra dažniausiai naudojama komanda norint siųsti laiškus iš terminalo. Jos naudojimui reikia įdiekti paketą mailutils:

Ubuntu/Debian:

apt install mailutils

CentOS/Redhat:

yum install mailx

Pateikiame kelis pavyzdžius, kaip ši komanda gali būti naudojama:

mail -s "Testo tema" [email protected] < /dev/null

  • Parametras -s naudojamas tam, kad galima būtų nurodyti laiško temą;

  • /dev/null - kelias iki failo, kuriame yra laiško turinys.

Taip pat galite siųsti laiškus prisegant failą su parametru -a, jeigu naudojate mailx ir -A, jeigu mailutils:

mail -A /opt/backup.sql -s "Kopijos failas" [email protected] < /dev/null

Dar galite siųsti laiškus keliems gavėjams atskiriant juos su kableliu:

mail -s "Testo tema" [email protected],[email protected] < /dev/null

3. Naudojant mutt komandą

Mutt dažniausiai naudojama lokalių dėžučių laiškų skaitymui naudojant terminalą arba laiškų skaitymui POP/IMAP serverius naudojančiose sistemose. Šios komandos sintaksė labai panaši į mail komandą. Norint naudoti mutt reikia įsidiegti papildomą paketą:

Ubuntu/Debian:

apt install mutt

CentOS/RHEL:

yum install -y mutt

Laiško siuntimui naudokite šią komandą:

mutt -s "Testo tema" [email protected] < /dev/null

Pridedant laišką:

mutt -s "Testo tema" -a /opt/backup.sql [email protected] < /dev/null

4. Laiškų siuntimas naudojant PHP skriptą

Norint siųsti laiškus per PHP, toks paketas turi būti įdiegtas į serverį, pvz.: LAMP (Linux, Apache, MySQL/MariaDB ir PHP).

Kai serveryje PHP programavimo kalbos paketas bei Apache paketai jau yra įdiegti, galite atlikti PHP failo kūrimą. Kaip pavyzdį, kuriame failą su pavadinimu siuntimas.php. Šis failas turi būti sukuriamas svetainės web failų direktorijoje /var/www/html/. Failo sukūrimui naudokite naudosime nano teksto redaktorių:

nano /var/www/html/siuntimas.php

Faile įkeliame tekstą:

<?php
$to_email = "siuntė[email protected]";
$subject = "Siuntimas su PHP";
$body = "Labas, tai testinis siuntimas su PHP scriptu";
$headers = "From: [email protected]";
if ( mail($to_email, $subject, $body, $headers)) {
echo("Sekmingai pasieke $to_email...");
} else {
echo("Siuntimas nepavyko...");
}
?>

Norint pradėti siuntimą iš komandinės eilutės, paleiskite komandą:

php sendEmail.php

5. Laiškų siuntimas naudojant PHP su HTML forma

Veikimui reikalingas PHP kodo bei Apache tarnybos veikimas.

Atliekame PHP failo kūrimą. Kaip pavyzdį, kuriame failą su pavadinimu siuntimas.php. Šis failas turi būti sukuriamas svetainės web failų direktorijoje /var/www/html/. Failo sukūrimui naudokite naudosime nano teksto redaktorių:

nano /var/www/html/siuntimas.php

Faile įkeliame tekstą, kurį rasite nuspaudę žemiau esančią nuorodą "PHP skripto kodas". Pakoreguokite nurodytas reikšmes prieš išsaugant.

Dabar galite atsidaryti svetainės adresą, kuriame bus forma ir ją užpildžius laiškas bus išsiunčiamas automatiškai:

http://localhost/sendEmail.php

PHP skripto kodas

<?php 
if (!isset($_POST["submit"])) { ?>

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
To: <input type="text" name="gavėjo_adresas"><br>
From: <input type="text" name="siuntėjo_adresas"><br>
Subject: <input type="text" name="laiško_tema"><br>
Message: <textarea rows="10" cols="20" name="tekstas"></textarea><br>
<input type="submit" name="Siųsti" value="Siųsti laišką">
</form>
<?php
} else {

if (isset($_POST["gavėjo_adresas"])) {
$to_email = $_POST["gavėjo_adresas"];
$from_email = $_POST["siuntėjo_adresas"];
$subject = $_POST["tema"];
$body = $_POST["tekstas"];

if ( mail($to_email, $subject, $body, $headers)) {
echo("Laiškas sėkmingai išsiųstas į $to_email...");
} else {
echo("Laiško siuntimas nepavyko...");
}
}
}
?>

Ar gavote atsakymą į savo klausimą?