PHPMailer: как легко отправлять электронные письма

PHPMailer — это фреймворк, который регулирует передачу электронной почты через PHP. PHPMailer в основном используется для контактных форм на веб-сайтах, но он также работает при отправке личных писем.

Что такое PHPMailer?

PHPMailer — это почтовое расширение, предоставляемое сообществом для PHP. Вероятность того, что письма, отправленные с помощью PHPMailer, попадут в папку спама, гораздо ниже по сравнению с командой mail, которая изначально реализована в PHP. Это происходит потому, что письма, написанные с помощью PHPMailer, отправляются по протоколу SMTP. SMTP расшифровывается как Simple Mail Transfer Protocol и используется для передачи электронной почты через Интернет.

Для чего используется PHPMailer?

PHPMailer немного более утомителен в использовании по сравнению с другими почтовыми провайдерами или встроенными почтовыми программами на вашем компьютере, что может заставить вас задуматься, почему люди предпочитают использовать PHPMailer. Фреймворк PHP упрощает создание автоматизированных ответов, таких как те, которые необходимы для веб-магазина. Кроме того, PHPMailer также подходит для контактных форм на веб-сайтах.

Требования к PHPMailer

Для использования PHPMailer вам необходим SMTP-сервер. Вы сами решаете, использовать ли вам почтовый сервер от провайдера или создать свой собственный сервер. Composer — это менеджер пакетов для PHP, который рекомендуется для установки расширения PHP.

Совет

Освоение основ PHP — еще одно важное требование для использования PHPMailer. Наш учебник по PHP для начинающих может быть полезен, если вы испытываете трудности с основами PHP!

Установка PHPMailer: пошаговая инструкция

Шаг 1: Загрузите текущую версию PHPMailer

Загрузите последнюю версию PHPMailer. Вы можете сделать это с помощью менеджера пакетов или вручную с GitHub.

Вариант 1: Скачать через Composer

Используйте следующую команду, если у вас установлен менеджер пакетов Composer:

composer require phpmailer/phpmailer

Важно: Если вы установили PHPMailer с Composer, то для отправки писем вам необходимо включить Composer в ваш PHP-код.

Для этого подойдет следующая строка кода:

require_once "vendor/autoload.php";

Ключевое слово «require_once» гарантирует, что композитор будет включен только один раз. В противном случае это может привести к программным ошибкам. На этом установка с использованием Composer завершена.

Вариант 2: Загрузить непосредственно с GitHub

Исходные файлы PHPMailer можно также загрузить вручную, выбрав «Clone or download« в соответствующем репозитории GitHub.

Шаг 2: Распакуйте файлы

Если вы скачали исходный код PHPMailer вручную, вам необходимо открыть ZIP-файлы. Выберите место, куда вы хотите установить PHPMailer, и включите PHPMailer в ваш скрипт. Используйте следующие строки кода, предполагая, что вы распаковали файлы PHPMailer в папку с названием PHPMailer:

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
/* Class for handling exceptions and errors */
require 'C:PHPMailersrcException.php';
/* PHPMailer class */
require 'C:PHPMailersrcPHPMailer.php';
/* SMTP class needed to connect to an SMTP server */.
require 'C:PHPMailersrcSMTP.php';
$email = new PHPMailer(TRUE);

Отправка электронной почты с помощью PHPMailer: пошаговые инструкции

Шаг 1: Включите пространства имен

Убедитесь, что пространства имен корректны для доступа к PHPMailer. Для этого необходимы операторы Use, поэтому ваш код должен содержать следующие строки:

<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerSMTP;
use PHPMailerPHPMailerException;

Вы можете получить доступ к отдельным классам, включив имя после последней косой черты.

Шаг 2: Отлавливаем ошибки

Хотя PHPMailer является очень надежным способом отправки электронной почты, время от времени могут возникать ошибки. Рекомендуется включать оператор try-catch в отправку электронной почты, чтобы предотвратить отправку конфиденциальных данных с вашего почтового сервера пользователям в виде сообщения об ошибке:

try {
    // Try to create a new instance of PHPMailer class
    $mail = new PHPMailer (true);
// (...)
} catch (Exception $e) {
        echo "Mailer Error: ".$mail->ErrorInfo;
}

Шаг 3: Аутентификация в SMTP

Для использования PHPMailer необходимо пройти аутентификацию по SMTP. Введите адрес вашего почтового сервера рядом с соответствующим протоколом (TLS/SSL или SMTP) и укажите порт с именем пользователя и паролем. Протокол и порт, которые вы используете, зависят от вашего почтового провайдера. Данные о соответствующем сервере можно получить на сайтах почтовых провайдеров.

$mail->isSMTP();
$mail->SMTPAuth = true;
// Personal data
$mail->host = "smtp.domain.com";
$mail->Port = "587";
$mail->username = "name.surname@domain.com";
$mail->password = "testpassword4321";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

Шаг 4: Укажите получателя письма

Теперь вы можете указать получателей вашего письма в сценарии.

// Sender
$mail->setFrom('info@example.com', 'name');
// Recipient, the name can also be stated
$mail->addAddress('info@example.com', 'name');
// Copy
$mail->addCC('info@example.com');
// Blind copy
$mail->addBCC('info@example.com', 'name');

Шаг 5: Добавьте содержание письма

Не забудьте о содержании письма! Это содержание обычно состоит из темы и текста, которые могут быть указаны как в HTML, так и в не-HTML вариантах. Важно отметить, что старое программное обеспечение может не справляться с текущим стандартом HTML5, поэтому, возможно, стоит создать письмо с использованием HTML.

Вы также можете легко отправлять вложения с помощью PHPMailer, используя функцию addAttachment. Изображения, музыка, документы, видео и GIF-файлы также могут быть отправлены с помощью PHPMailer. Вы также можете переименовать свои вложения с помощью необязательного второго параметра, который передается в функцию.

$mail->isHTML(true);
// Subject
$mail->Subject = 'The subject of your mail';
// HTML content
$mail->Body = 'The mail text as HTML content. <b>bold</b> elements are allowed.';
$mail->AltBody = 'The text as a simple text element';
// Add attachment
$mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");

Шаг 6: Используйте правильную кодировку символов

Из-за различных акцентных букв в других языках, может быть хорошей идеей включить UTF-8 в PHPMailer для предотвращения ошибок отображения, особенно при использовании различных вложений. Для этого добавьте следующие строки кода в ваш PHP-скрипт:

$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';

Шаг 7: Отправить письмо

Наконец, вам осталось отправить письмо. Используйте команду:

$mail-> send();

Хорошей идеей будет поместить весь код, показанный в этом запросе отправки, в блок try statement вашего скрипта, чтобы отловить любые ошибки.

Пример кода для отправки электронной почты

Весь код, необходимый для отправки электронного письма с прикрепленным изображением выбранному вами получателю с помощью PHPMailer, приведен ниже:

 

<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerSMTP;
use PHPMailerPHPMailerException;
require_once "vendor/autoload.php";
try {
        // Create instance of PHPMailer class
        $mail = new PHPMailer($debug);
        if ($debug) {
                // issue a detailed log
                $mail->SMTPDebug = PHPMailerPHPMailerSMTP::DEBUG_SERVER; }
        }
        // Authentication with SMTP
        $mail-> isSMTP();
        $mail->SMTPAuth = true;
        // Login
        $mail->host = "smtp.domain.com";
        $mail->Port = "587";
        $mail->username = "name.surname@domain.com";
        $mail->password = "testpassword4321";
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
        $mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");
     $mail->CharSet = 'UTF-8';
     $mail->Encoding = 'base64';
        $mail->isHTML(true);
        $mail->Subject = 'The subject of your mail';
     $mail->Body = 'The mail text in HTML content. <b>bold</b> elements are allowed.';
     $mail->AltBody = 'The text as a simple text element';
        $mail->send();
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: ".$mail->ErrorInfo;
}

Оцените статью
cdelat.ru
Добавить комментарий