Raspberry Pi – skrypt php do wysyłania wiadomości e-mail podając argumenty za pomocą phpmailer

W tym artykule zaprezentuję skrypt php do wysyłania wiadomości e-mail za pomocą phpmailer. Skrypt zadziała na każdym systemie linux, systemie hostingowym z dostępem do powłoki bash i z zainstalowanym php. Jest to zwykły skrypt php którego ja używam z terminala systemu linux, ale można go również wykonać za pomocą przeglądarki przez stronę www.

Zaprezentuje skrypt na przykładzie urządzenia Raspberry Pi. Za pomocą tego urządzenia skrypt można również wykonywać z innego serwera linux. Wszystko zostanie opisane w tym artykule.

Na początek kilka słów o Raspberry Pi.

Początkowo była to platforma edukacyjna, mająca na celu zapobiec stale obniżającemu się poziomowi wiedzy studentów. By zachęcić ich do nauki programowania i robotyki, stworzono minikomputer. Tak powstało tanie, niewielkie urządzenie dla majsterkowiczów i programistów. Z czasem okazało się, że platforma znajduje szersze zastosowanie.

Raspberry, o czym warto wiedzieć, to nie tylko komputery, ale i wiele różnych urządzeń peryferyjnych podłączanych do nich, a więc kamery, czujniki, układy jezdne, ekrany itp. System operacyjny „Malinki” to Raspberry Pi OS (Raspbian). Skojarzenia z Debianem są jak najbardziej uzasadnione, gdyż Raspbian to dystrybucja Linuxa i jest oparty właśnie na systemie Debian.

Ja na karcie pamięci 16 GB zainstalowałem system za pomocą Raspberry Pi Imager. Program można pobrać z tego linka, można w nim z góry ustawić nazwę użytkownika, hasło oraz usługi które mają być uruchomione np. ssh. Po włożeniu karty micro SD do urządzenia, po kilku minutach wszystko uruchomi się samo. Będziemy mogli zalogować się do Raspberry Pi po ssh za pomocą innego komputera np. za pomocą putty z systemu Windows lub przez terminal z systemu Linux.

Na Raspbianie doinstalowałem aplikacje apache2, php oraz dla ułatwienia pisania skryptów mc (Midnight Commander).

sudo apt update
sudo apt install apache2 php7.4 mc

Wersja php może być nowsza, nie stanowi to problemu przy wykonywaniu skryptu.

Skrypt do wysyłania wiadomości e-mail podając argumenty za pomocą phpmailer.

Mamy wszystko gotowe więc przechodzimy do tworzenia skryptu. Skrypt tworzymy za pomocą polecenia:

sudo mcedit mailSender-arg.php

Następnie wklejamy poniższy kod php który jest opisany dla wyjaśnienia komentarzami:

<?php
//Zespol PGKOMP.PL
//wysylanie wiadomosci e-mail z podanymi argumentami adres, temat, tresc za pomoca phpmailer

  //logujemy uruchomienie skryptu
  $log = fopen("log_RaspberryPi_mailSender.txt", "a");
  fwrite($log, date('Y-m-d H:i:s')."\tRaspberryPi\tmailSender-arg.php:\tUruchomienie skryptu mailSender-arg.php.\n");
  fclose($log);

  //dolaczamy do skryptu niezbedne pliki dla phpmailer
  require("phpmailer/src/PHPMailer.php");
  require("phpmailer/src/SMTP.php");
  require("phpmailer/src/Exception.php");

  //sprawdzamy czy wszystkie argumenty zostały podane
  if ($argc < 4) {
    die("\n\nPodano zbyt mało argumentów \n\n"
            . "argv: NIE PODANO ARGUMENTU\n\n");
    }

  //wpisujemy podane argumenty do zmiennych
  $adres = $argv[1];
  $temat = $argv[2];
  $tresc = $argv[3];
  //czwartym argumentem moze byc sciezka do zalacznika
  //$zalacznik = $argv[4];

  //phpmailer
  $mail = new PHPMailer\PHPMailer\PHPMailer();
  $mail->IsSMTP();
  $mail->CharSet="UTF-8";
  $mail->Host = "smtp.wp.pl"; //nazwa lub ip servera poczty
  $mail->SMTPDebug = 1;
  $mail->Port = 465; //port serwera poczty
  $mail->SMTPSecure = 'ssl'; //tls lub ssl
  $mail->SMTPAuth = true;
  $mail->IsHTML(true);
  $mail->Username = "w.pgkomp1981@wp.pl"; //login do servera poczty
  $mail->Password = "wpiszSwojeHaslo"; //haslo uzytkownika poczty
  $mail->setFrom('w.pgkomp1981@wp.pl', 'TeStEr');
  $mail->AddAddress("$adres"); //adres odbiorcy pobrany z argumentu
  $mail->Subject = "$temat"; //temat pobrany z argumentu
  $mail->Body = "$tresc"; //tresc wiadomosci pobrana z argumentu

  //odkomentowac w celu zalaczenia zalacznika
  //$file_to_attach = 'lista1.txt';
  //$mail->AddAttachment($file_to_attach , 'lista1.txt');

  //wysylamy wiadomosc e-mail + logowanie bledu lub logowanie poprawnego wyslania wiadomosci e-mail
  if(!$mail->Send()) {
    echo "\nProblem z wysłanie wiadomości e-mail na adres $adres : " . $mail->ErrorInfo . "\n";
    $log = fopen("log_RaspberryPi_mailSender.txt", "a");
    fwrite($log, date('Y-m-d H:i:s')."\tRaspberryPi\tmailSender-arg.php:\tProblem z wyslaniem wiadomosci do: $adres.\n");
    fwrite($log, date('Y-m-d H:i:s')."\tRaspberryPi\tmailSender-arg.php:\t$mail->ErrorInfo\n");
    fclose($log);
    } else {
      echo "Wiadomość wysłana do $adres !!\n";
      $log = fopen("log_RaspberryPi_mailSender.txt", "a");
      fwrite($log, date('Y-m-d H:i:s')."\tRaspberryPi\tmailSender-arg.php:\tWyslano wiadomosc e-mail na adres: $adres.\n");
      fclose($log);
      }

  //logujemy zakonczenie skryptu
  $log = fopen("log_RaspberryPi_mailSender.txt", "a");
  fwrite($log, date('Y-m-d H:i:s')."\tRaspberryPi\tmailSender-arg.php:\tZakonczenie skryptu mailSender-arg.php.\n");
  fclose($log);

?>

Skrypt zapisujemy za pomocą klawisza F10. W skrypcie pokazany jest przykładowy mail z wp.pl, koniecznie podmieńcie dane ze swojego serwera pocztowego.

W katalogu w którym utworzyliśmy skrypt musi się znaleźć katalog z plikami phpmailer który jest do pobrania z tego linku, jest to wersja phpmailer którą używałem do tworzenia tego skryptu. Skrypt uruchamiamy za pomocą polecenia:

sudo php mailSender.php adres@odbiorcy "temat temat" "jakas tresc"

Wykonanie skryptu wygląda następująco:

Jak widać wszystko działa poprawnie. Jeżeli używacie innego serwera pocztowego niż wp trzeba dostosować ustawienia phpmailer. Zapraszam do komentowania, postaram się pomóc w tym temacie.

Serdecznie zapraszam do zakupu skryptu php który wysyła reklamę na adresy z listy z pliku txt który niebawem będzie dostępny w naszym sklepie tu.

Również w tym miesiącu zaprezentujemy skrypt php za pomocą którego możemy wysyłać wiadomości SMS za pomocą urządzenia Raspberry Pi przez program gammu, dzięki któremu podając argumenty do skryptu będziemy mogli wysłać wiadomość SMS.

Do czego można użyć takich skryptów ?
do wysyłania logów z serwera na podany adres e-mail o określonej godzinie, do wysyłania newsletter do swoich klientów. Skrypt można wrzucić do cron i będzie się wykonywał automatycznie.

Skrypt mailSender-arg.php dostępny do pobrania tu.

9 komentarzy do “Raspberry Pi – skrypt php do wysyłania wiadomości e-mail podając argumenty za pomocą phpmailer

  1. Kowalski

    fajny artykuł, z tego co widzę ma wiele zastosowań, można to zautomatyzować i z każdego linuxa wysyłać maile np. z logami, a czy macie może konfiguracje do gmail?

    Odpowiedz
    1. pgkomp Autor wpisu

      Dziękujemy za komentarz, zauważyliśmy dużo zapytań o konfiguracje poczty gmail za pomocą phpmailer, gwarantujemy że w najbliższym czasie zaktualizujemy skrypt o konfiguracje poczty do serwera pocztowego gmail.

      Odpowiedz
  2. Brzęczyszczykiewicz

    Proste ale jakie przydatne, gdyby nie znał php i miał szukać żeby coś takiego zrobić to nerwów bym stracił mnóstwo…

    Odpowiedz
  3. gość

    ludzie, przecierz to jest kompletnie bezużyteczny artykuł, każdy kto ma jakieś pojęcie o php sam by zrobił taki skrypt chociażby w ramach ćwiczenia…

    Odpowiedz
  4. Dzidek

    ja uważam artykół za przydatny, raz kiedyś się coś takiego robi a warto mieć to zapisane gdzieś np tu, zwłaszcza chodzi o konfiguracje phpmailer

    Odpowiedz
  5. php

    pomimo znajomości php, skrypt do konfiguracji phpmailer powinien być aktualizowany z uwagi na to że się zmienia. Fajna sprawa jak coś pilnego wypadnie na szybko zajrzeć a nie szukać u wujka google, jeżeli na codzień ma się z tym do czynienia to nie przydatne ale jednak warto mieć gdzieś zapisaną konfiguracje phpmailer. Mi się podoba, polecam!

    Odpowiedz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *