Wyślij e-mail za pomocą serwera SMTP Gmaila ze skryptu PHP
E-mail odgrywa ważną rolę na stronie internetowej. Każda strona internetowa zazwyczaj musi wysyłać e-maile do użytkowników. Te e-maile mogą być wysyłane ze strony kontaktowej, biuletynu, formularza rejestracyjnego itp.
PHP udostępnia mail()
funkcję, która służy do wysyłania wiadomości e-mail. Ale istnieją ograniczenia podczas korzystania z mail()
metody. Nie możesz wysyłać wiadomości e-mail z lokalnego serwera programistycznego. Inną wadą jest to, że istnieje duże prawdopodobieństwo, że Twój e-mail stanie się spamem.
W większości przypadków mail()
metoda nawet nie wysyła e-maila. Może to być spowodowane nieprawidłową konfiguracją serwera lub czymś innym.
Aby wyjść z tych problemów lub ograniczeń, można użyć serwera SMTP do wysyłania e-maili.
W tym artykule dowiemy się, jak używać PHPMailera i serwera SMTP Gmail do wysyłania e-maili.
Instalacja
Najpierw musisz zainstalować bibliotekę PHPMailer w swoim projekcie. Zalecanym sposobem instalacji biblioteki jest użycie Composera.
Otwórz wiersz polecenia w katalogu głównym projektu i uruchom poniższe polecenie.
composer require phpmailer/phpmailer
Ponieważ używamy Gmail SMTP, musisz zmienić niektóre ustawienia na swoim koncie Google. Zaloguj się na swoje konto Google i kliknij Moje konto. Gdy znajdziesz się na stronie Moje konto, kliknij Bezpieczeństwo. Przewiń w dół, a znajdziesz ustawienia „Mniej bezpieczny dostęp do aplikacji". Ustaw go na ON.
Następnie musimy napisać kod, który wyśle wiadomość e-mail za pomocą biblioteki PHPMailer i serwera SMTP Gmaila.
Skrypt PHP do wysyłania wiadomości e-mail za pomocą serwera SMTP Gmaila
Otwórz plik PHP, w którym musisz napisać kod do wiadomości e-mail. Na przykład zakładam, że masz sendemail.php
plik w katalogu głównym.
sendemail.php
<?php
//Import PHPMailer classes into the global namespace
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once 'vendor/autoload.php';
$mail = new PHPMailer(true);
?>
W powyższym kodzie umieściłem środowisko biblioteki PHPMailer w pliku PHP.
Następnie, aby wysyłać e-maile za pomocą PHPMailera, użytkownik musi przekazać adres serwera SMTP Gmaila, port SMTP dla Gmaila i uwierzytelnianie SMTP (które jest niczym innym jak nazwą użytkownika i hasłem do konta Google).
$mail->isSMTP();
$mail->Host = 'smtp.googlemail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
$mail->Username = 'GMAIL_USERNAME'; //username
$mail->Password = 'GMAIL_PASSWORD'; //password
$mail->SMTPSecure = 'ssl';
$mail->Port = 465; //SMTP port
Otóż to! Skończyłeś z konfiguracją. Teraz możesz już wysłać wiadomość e-mail do użytkownika.
$mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
$mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
$mail->isHTML(true);
$mail->Subject = 'Email subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
Zastąp symbole zastępcze rzeczywistymi wartościami. Uruchom ten plik w przeglądarce, a wiadomość e-mail powinna zostać wysłana na adres e-mail odbiorcy.
Wysyłanie załączników w wiadomości e-mail
Korzystając z biblioteki PHPMailer można wysłać jeden lub wiele załączników w wiadomości e-mail. Wszystko, co musisz zrobić, to przekazać ścieżkę katalogu swoich załączników do metody addAttachment
w następujący sposób.
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.jpg');
Nasz ostateczny kod jest następujący.
sendemail.php
<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once "vendor/autoload.php";
require_once "constants.php";
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.googlemail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
$mail->Username = GMAIL_USERNAME; //username
$mail->Password = GMAIL_PASSWORD; //password
$mail->SMTPSecure = 'ssl';
$mail->Port = 465; //smtp port
$mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
$mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.png');
$mail->isHTML(true);
$mail->Subject = 'Email Subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: '. $mail->ErrorInfo;
}
?>
Mam nadzieję, że rozumiesz, jak wysyłać wiadomości e-mail za pomocą serwera SMTP Gmaila ze skryptu PHP. Podziel się swoimi przemyśleniami i sugestiami w komentarzu poniżej.
Powiązane artykuły
- Wysyłanie wiadomości e-mail przez serwer SMTP Gmaila w Laravel
- Wyślij e-mail za pomocą serwera SMTP Gmaila i biblioteki Swift Mailer
- Wyślij e-mail za pomocą Mailjet w PHP