Skip to content

Instantly share code, notes, and snippets.

@snnwolf
Last active June 17, 2020 10:24
Show Gist options
  • Save snnwolf/f80a659fb4a3dc91b69d52dde69ada8d to your computer and use it in GitHub Desktop.
Save snnwolf/f80a659fb4a3dc91b69d52dde69ada8d to your computer and use it in GitHub Desktop.
Сниппет для #modx для отправки уведомления на мыло с прикреплением файла
<?php
// взято здесь https://ilyaut.ru/reposts/sending-mail-through-modmail/
/**
* Перед использованием установить переменные: emailsender, site_name
* Опции:
* [$html] отправить в виде html, если не задан, останется текст
* $address строка адресов через ","
* $subject
* [$subject_prefix] префикс для сообщения напр, "[site_name] Вам письмо"
* $message
* [$filepath] прикрепить файл, если указан
* [$filename] имя файла, если указан $filepath
* [$return] вовзращать результат работы сниппета
*/
if (empty($address)) {
$modx->log(modX::LOG_LEVEL_ERROR,'sendMail: empty address');
return '[email: noaddress]';
}
if (!isset($subject_prefix)) {
$subject_prefix = sprintf('[%s]', $modx->getOption('site_name'));
}
if (empty($subject)) {
$subject = '[Без темы]';
}
if (empty($message)) {
$message = '[Пустое сообщение]';
}
/*Активируем почтовый сервис MODX*/
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
$modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
/*Адрес получателя нашего письма*/
$address = explode(',', $address);
if (is_array($address)) {
foreach($address as $_) {
$modx->mail->address('to', trim($_));
}
}
/*Заголовок сообщения*/
$full_subject = $subject;
if ($subject_prefix) {
$full_subject = $subject_prefix . " " . $subject;
}
$modx->mail->set(modMail::MAIL_SUBJECT, $full_subject);
/*Подставляем чанк с телом письма (предварительно его нужно создать)*/
$modx->mail->set(modMail::MAIL_BODY, $message);//$modx->getChunk('myEmailTemplate'));
/*Отправляем*/
if (!empty($html)) {
$modx->mail->setHTML(true);
}
// с формы:
// <input id="upfile" type="file" name="photo" value="[[!+fi.photo]]" />
// в сниппете
// $file = $_FILES['photo']['tmp_name']; // путь к файлу
// $name = $_FILES['photo']['name']; // имя файла
// прикрепляем файл
if ($filepath) {
if (!is_file($filepath)) {
$modx->log(modX::LOG_LEVEL_ERROR, sprintf('sendMail: Файл %s не найден', $filepath));
} else {
if (empty($filename)) {
$filename = 'noname-file';
}
$modx->mail->attach($filepath, $filename);
}
}
if (!$modx->mail->send()) {
//var_dump($modx->mail->mailer->ErrorInfo);
$modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
if ($return) {
return '[email:fail]';
}
}
$modx->mail->reset();
if ($return) {
return '[email:ok]';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment