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

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

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

PHPMailer

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

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

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

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

$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(); // отправка письма

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии 4

  • Igor Fedorov 20 июня 2015 #

    А, Миша, спасибо. Хех, я настолько тебя завалил вопросами, что ты написал статью. 🙂

    • Миша 20 июня 2015 #

      Пожалуйста 🙂

  • seredniy 1 декабря 2015 #

    а стандартная оберька впшная разве не умеет файлы отправлять?

    • Миша 2 декабря 2015 #

      wp_mail()? Умеет, просто пост не про неё, да и добавляет вложения она как раз способом, описанным в этой статье.

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, в случае несоблюдения этого условия в 99% случаях ваш коммент будет удалён, а автор заблокирован. Печалька.