Преобразование CFMAIL в эквивалент скрипта и использование запроса

Итак, я конвертирую устаревшее приложение в ColdBox MVC и пытаюсь преобразовать теги в скрипт. Раньше я бы просто сделал

<cfmail
query="getRecipients"
type="text/html"
from="Me <[email protected]>"
to="#getRecipients.email#"
subject="Hello everybody from me">
<p>Hey #getRecipients.name#, how are you?</p>
</cfmail>

и я был сделан. Письма были бы отправлены тому, кто был возвращен из запроса getRecipients. Но теперь, кажется, я должен

var oMail = mailService
    .newMail(
        to="[email protected]",
        from="[email protected]",
        subject="Hello everybody from me",
        bodyTokens={ name=name} 
        );

    oMail.setBody("
Hey @name@, how are you?

    ");

    var results = mailService.send( oMail );                                
}

Что само по себе кажется слишком многословным, но, по крайней мере, это работает при отправке одному получателю или в список, разделенный запятыми. Но что бы я ни делал, я не могу заставить его отправить запрошенный список получателей.

Я попытался to=getRecipients и получил ошибку, что значение "to" не является строкой. Пробовал to="getRecipients" и пока не получил ошибку, почта не отправлялась (или даже не стояла в очереди на отправку). Различные другие попытки также либо завершились ошибкой, либо завершились безуспешно.

Я прочитал ТАК обсуждается здесь, что, похоже, указывает на то, что использование запроса в рассылках на основе скриптов на самом деле невозможно. Но это обсуждение было в 2012 году — ведь это уже не так, верно? Конечно, можно воспроизвести эту фундаментальную особенность в сценарии, верно? Что мне не хватает? Я провел много исследований по этому вопросу, и каждый найденный мной пример отправляет только на один жестко закодированный адрес.

Буду признателен за любые советы или предложения по этому поводу. Большое спасибо за вашу помощь!


person daltec    schedule 31.07.2018    source источник
comment
Мое предложение таково..., я никогда не был поклонником использования везде только тегов или только скриптов. Я использую теги там, где хорошо работают теги, я использую скрипты там, где хорошо работают скрипты. Если вы занимаетесь преобразованием всех тегов в скрипты, у вас будет еще больше работы при преобразовании запросов, особенно если в них есть cfifs.   -  person Alex Baban    schedule 31.07.2018
comment
Спасибо Алекс, это, вероятно, то, что я в конечном итоге буду делать, по крайней мере, с услугами, связанными с электронной почтой. Я просто трачу слишком много времени на то, что займет несколько минут со старым добрым cfmail.   -  person daltec    schedule 31.07.2018


Ответы (1)


Я считаю, что это было бы:

var oMail = mailService
    .newMail(
        to=valueList(getRecipients.email),
        from="[email protected]",
        subject="Hello everybody from me",
        bodyTokens={ name=name} 
        );

См.: https://cfdocs.org/valuelist

person Redtopia    schedule 31.07.2018
comment
Спасибо, Redtopia, это один из вариантов, который молча терпит неудачу. Я не получаю сообщения об ошибке или какой-либо обратной связи, которую я вижу в консоли, но само электронное письмо никогда не ставится в очередь (или не отправляется, разумеется). - person daltec; 31.07.2018
comment
Мои извинения, Redtopia, ваш ответ ДЕЙСТВИТЕЛЬНО сработал! Страница, вызывающая функцию почты, была закеширована. Очистка кеша и повторный запуск привели к тому, что электронное письмо было отправлено на 7 электронных писем из нашей базы данных. Большое спасибо и извините за сумбур!!! - person daltec; 31.07.2018