Есть ли способ настроить автоматическую отправку электронных писем при добавлении новых данных в базу данных MySQL. Предпочтительно в PHP.
Идея состоит в том, что при отправке новой базы данных в базу данных автоматически создается электронное письмо с новой информацией со ссылкой для просмотра информации в Интернете и отправки на предварительно настроенный адрес электронной почты.
Целью этого является система бронирования отпуска. Коллеги смогут отправлять даты и время отпуска, а менеджер команды автоматически сообщается, когда и когда они добавляются или меняются.
Я попытался использовать Word Press, но он слишком неуклюжий и намного более мощный, чем мне нужно. Я также отметил еще пару вопросов здесь, в Stack Flow, но у них нет ответов или ответов, а не строго на тот же вопрос.
Любая помощь будет принята с благодарностью.
Если у вас запущена служба SMTP, вы можете outfile в папке drop. Если у вас большой объем, вы можете получить дубликаты имен файлов, но есть способы избежать этого.
В противном случае вам нужно создать UDF.
Вот пример триггерного решения:
CREATE TRIGGER test.autosendfromdrop BEFORE INSERT ON test.emaildrop FOR EACH ROW BEGIN /* START THE WRITING OF THE EMAIL FILE HERE*/ SELECT concat("To: ",NEW.To), concat("From: ",NEW.From), concat("Subject: ",NEW.Subject), NEW.Body INTO OUTFILE "C:\\inetpub\\mailroot\\pickup\\mail.txt" FIELDS TERMINATED by '\r\n' ESCAPED BY ''; END;
Чтобы разметка тела сообщения вам понадобится что-то вроде этого …
CREATE FUNCTION `HTMLBody`(Msg varchar(8192)) RETURNS varchar(17408) CHARSET latin1 DETERMINISTIC BEGIN declare tmpMsg varchar(17408); set tmpMsg = cast(concat( 'Date: ',date_format(NOW(),'%e %b %Y %H:%i:%S -0600'),'\r\n', 'MIME-Version: 1.0','\r\n', 'Content-Type: multipart/alternative;','\r\n', ' boundary=\"----=_NextPart_000_0000_01CA4B3F.8C263EE0\"','\r\n', 'Content-Class: urn:content-classes:message','\r\n', 'Importance: normal','\r\n', 'Priority: normal','\r\n','','\r\n','','\r\n', 'This is a multi-part message in MIME format.','\r\n','','\r\n', '------=_NextPart_000_0000_01CA4B3F.8C263EE0','\r\n', 'Content-Type: text/plain;','\r\n', ' charset=\"iso-8859-1\"','\r\n', 'Content-Transfer-Encoding: 7bit','\r\n','','\r\n','','\r\n', Msg, '\r\n','','\r\n','','\r\n', '------=_NextPart_000_0000_01CA4B3F.8C263EE0','\r\n', 'Content-Type: text/html','\r\n', 'Content-Transfer-Encoding: 7bit','\r\n','','\r\n', Msg, '\r\n','------=_NextPart_000_0000_01CA4B3F.8C263EE0--' ) as char); RETURN tmpMsg; END ;
Я мог бы сначала попробовать функцию php mail () .
Достаточно ли этого зависит от приложения. Например, системные администраторы могут обновлять любую из моих баз данных с помощью собственной командной строки dbms. Они могут также использовать утилиту GUI или даже что-то вроде Excel (возможно), чтобы делать обновления, которые php вообще не увидит. Если это произойдет, вы не увидите никаких сообщений об этих изменениях.
По крайней мере, некоторые dbms могут выполнять приложение электронной почты из базы данных. Но это может вызвать некоторые проблемы с безопасностью. (Как правило, мои базы данных не записываются в файловую систему, кроме как во время резервного копирования / дампа, и они не взаимодействуют с электронной почтой.) Подумайте о том, что вы хотите, если какой-либо администратор обновляет каждую строку в таблице. (Чаще всего, этот администратор будет вам.)
Лично я не думаю, что буду использовать электронную почту для этого. Это то, что (IMHO) должно привлекать внимание администратора один раз в день максимум. Для этого я, вероятно, сначала попробую веб-страницу, которая показывает изменения со времени последнего посещения администратором.