Электронная почта с использованием cron, включая приложение к электронной почте от Moodle

Я хотел бы отправлять электронные письма только тем пользователям, которые прошли определенный курс и добавляют файл PDF (сертификат для прохождения курса) в качестве приложения к электронному письму, и делаю это в определенное время, используя Moodle Cron.

Я посмотрел на некоторые плагины, чтобы узнать, как это делается, но я все еще не уверен, как именно я должен это сделать.

Я нуждаюсь:
1. чтобы узнать, как добавить вложение в электронное письмо (и какой API использовать),
2. как я буду использовать cron для отправки электронных писем нужной группе в определенное время,
3. Как найти пользователей, которые прошли курс, чтобы я мог отправлять им электронные письма (с вложениями).

Заранее спасибо.

(Я использую Moodle версии 3.0)

0

Решение

Это обзор.

  1. Сначала создайте локальный плагин. Например /local/yourplugin

https://docs.moodle.org/dev/Local_plugins

  1. Затем настройте провайдера сообщений

https://docs.moodle.org/dev/Message_API

определено (‘MOODLE_INTERNAL’) || умереть();

в local/yourplugin/db/messages.php

$messageproviders = array (
'coursecompleted' => array (
),
  1. Затем добавьте наблюдателя событий — вы захотите ответить на событие course_completed

https://docs.moodle.org/dev/Event_2

в /local/yourpluginname/db/events.php

есть что-то вроде

$observers = array(

array(
'eventname'   => '\core\event\course_completed',
'callback'  => 'local_yourplugin_observer::course_completed',
),

);
  1. Теперь добавьте код сообщения

Добавьте что-то вроде этого в /local/message/classes/observer.php

defined('MOODLE_INTERNAL') || die();

class local_yourplugin_observer {

/**
* Triggered when 'course_completed' event is triggered.
*
* @param \core\event\course_completed $event
* @return bool
*/
public static function course_completed(\core\event\course_completed $event) {

// Your code here.

$message = new \core\message\message();
$message->component = 'local_yourplugin'; // Name of your local plugin.
$message->name = 'coursecompleted'; // Name of message provider.
$message->userfrom = $USER;
$message->userto = $user;
$message->subject = 'message subject 1';
$message->fullmessage = 'message body';
$message->fullmessageformat = FORMAT_MARKDOWN;
$message->fullmessagehtml = '<p>message body</p>';
$message->smallmessage = 'small message';
$message->notification = '0';
$message->contexturl = 'http://GalaxyFarFarAway.com';
$message->contexturlname = 'Context name';
$message->replyto = "[email protected]";
$content = array('*' => array('header' => ' test ', 'footer' => ' test ')); // Extra content for specific processor
$message->set_additional_content('email', $content);

// Create a file instance.
$usercontext = context_user::instance($user->id);
$file = new stdClass;
$file->contextid = $usercontext->id;
$file->component = 'user';
$file->filearea  = 'private';
$file->itemid    = 0;
$file->filepath  = '/';
$file->filename  = '1.txt';
$file->source    = 'test';

$fs = get_file_storage();
$file = $fs->create_file_from_string($file, 'file1 content');
$message->attachment = $file;

$messageid = message_send($message);
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]