Я использую тэг cfmail для отправки электронной почты пользователю. Дополнительная вещь, которую мне нужно выполнить, - удалить записи после отправки их пользователям. Есть ли какое-либо решение для наблюдения за задачей cfmail, является ли оно завершено или нет. Например, как обратный вызов, чтобы указать, что задача выполнена.Coldfusion cfmail с функцией обратного вызова
ответ
С электронными письмами нет гарантий, что письмо было доставлено.
Если тег cfmail, выполненный без ошибок, будет содержать запись в каталоге cfml spool. После того, как сервер отправит почту на ваш SMTP-сервер, coldfusion удалит письмо из каталога спула.
ПРИМЕЧАНИЕ. Если ваш сервер работает быстро, вы никогда не увидите почту в папке спула.
Вы можете попытаться создать решение, которое проверяет почтовые журналы, но даже это не дает вам гарантии, что письмо было доставлено.
В большинстве случаев знание того, что выполнено cfmail, достаточно.
<cfquery name="emailStuff">
SELECT * FROM mytable
</cfquery>
<cfloop query="emailStuff">
<cfmail>
cfmail contents/properties
</cfmail>
<cfquery>
DELETE FROM mytable WHERE ID=emailStuff.ID
</cfquery>
</cfloop>
Не уверен, что вышеуказанное является тем, что вы ищете. Но это примерный пример кода, который удалит вашу запись БД после отправки почты.
Также cfmail имеет свойства для failto
и debug
.
Если электронное письмо не удалось, он отправит сообщение об ошибке кому бы то ни было, указанному в failto
, или вы можете использовать debug
для регистрации несостоявшихся сообщений электронной почты.
см: cfmail docs
UPDATE: Вы можете также переместить запрос на удаление наружу петли так, что она нужна только для удаления из базы данных в одном быстром движении.
<cfloop query="emailStuff">
<cfmail>
cfmail contents/properties
</cfmail>
</cfloop>
<cfquery>
DELETE FROM mytable
WHERE ID IN (<cfqueryparam list="yes" value="#emailStuff.ID#" />)
</cfquery>
Я не уверен, что понимаю, что вы пытаетесь удалить. Вы зацикливаете запрос на данные электронной почты? – TomDillinger
Да, я перебираю запрос на данные электронной почты. Я пытаюсь удалить после этого данные расписания для отправки электронных писем. – zawhtut
Чтобы проверить отправку почты, вы можете прочитать свой журнал рассылки. –