Отправка email с вложениями при помощи PHPMailer в WordPress

Теперь разберёмся с отправкой письма с вложением (вложениями) средствами WordPress.

вложение в программе AirMail

PHPMailer

PHPMailer — это такой класс, который позволяет очень удобно (на мой взгляд) отправлять емайлы. Подробное описание класса не было целью этого поста, поэтому я лишь покажу, как нужно приклеплять вложения посредством кода PHP и приведу подробный пример.

Итак, чтобы добавить вложение к письму, используйте этот паттерн:

$phpmailer->AddAttachment('абсолютный путь к файлу на хостинге', 'название файла');

На примере плагинов:

1
2
3
$plugin_name = 'true-instagram-widget';
$phpmailer->AddAttachment(getcwd() . '/plugins/' . $plugin_name . '.zip', $plugin_name . '.zip');
// я добавил только одно вложение, но вы можете добавить и больше, продублировав вторую строку

И теперь, чтобы уже всё было понятно окончательно, вот вам полный пример отправки письма:

global $phpmailer;
if ( !is_object( $phpmailer ) || !is_a( $phpmailer, 'PHPMailer' ) ) { // проверяем, существует ли объект $phpmailer и принадлежит ли он классу PHPMailer
	// если нет, то подключаем необходимые файлы с классами и создаём новый объект
	require_once ABSPATH . WPINC . '/class-phpmailer.php';
	require_once ABSPATH . WPINC . '/class-smtp.php';
	$phpmailer = new PHPMailer( true );
}
$phpmailer->ClearAttachments(); // если в объекте уже содержатся вложения, очищаем их
$phpmailer->ClearCustomHeaders(); // то же самое касается заголовков письма
$phpmailer->ClearReplyTos(); 
$phpmailer->From = 'true@truemisha.ru'; // от кого, Email
$phpmailer->FromName = 'Миша Рудрастых'; // от кого, Имя
$phpmailer->Subject = 'Плагин: ' . $plugin_display_name; // тема
$phpmailer->SingleTo = true; // это означает, что если получателей несколько, то отображаться будет всё равно только один (если непонятно, спросите, я вам подробно объясню в комментариях)
$phpmailer->ContentType = 'text/html'; // тип содержимого письма
$phpmailer->IsHTML( true );
$phpmailer->CharSet = 'utf-8'; // кодировка письма
$phpmailer->ClearAllRecipients(); // очищаем всех получателей
$phpmailer->AddAddress( $_POST['email'] ); // добавляем новый адрес получателя
$phpmailer->Body = '<p>Благодарю вас за покупку плагина (архив приложен к письму).</p><p>Если у вас возникнут какие-либо вопросы, <a href="https://misha.blog/contacts">свяжитесь со мной</a> любым удобным вам способом.</p>';
$phpmailer->AddAttachment(getcwd() . '/plugins/' . $plugin_name . '.zip', $plugin_name . '.zip'); // добавляем вложение
$phpmailer->Send(); // отправка письма
Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.

Смотрите также