2015-07-02 7 views
1

Я пытаюсь проверить список писем, которые были извлечены из базы данных.Coldfusion проверяет список адресов электронной почты

<cfquery name="AdminEmail" datasource="#blah#"> 
Select email from users where role = "admin" 
<cfquery> 

<cfset variable.mailto = #adminemail.Email#> 

Запрос будет возвращать несколько писем, которые подходят для cfmail, но IsValid проверяет только одну переменную. Любой совет. Это необходимо для того, чтобы получить от меня стандарты безопасности.

+2

Проанализируйте результаты запроса и выполните метод isValid() внутри цикла. Затем обработайте их, однако вам нужно оттуда. –

+1

fyi вам не нужно «#» при настройке вашей переменной –

+2

Подтвердите их по пути, чтобы вам не пришлось беспокоиться об этом на выходе. –

ответ

4

Прокрутите запрос по электронной почте, а затем добавьте их в новую переменную, если они действительны.

<cfset validEmails = []> 
<cfloop query="adminemail"> 
    <cfif isValid('email', adminemail.email)> 
    <cfset arrayAppend(validEmails, adminemail.email)> 
    </cfif> 
</cfloop> 
<cfset mailTo = arrayToList(validEmails)> 

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

+0

Это отлично работает. Если вы находитесь на cf11/lucee, вы также можете воспользоваться arrayFilter: [см. Пример trycf.com] (http://trycf.com/editor/gist/304f7db3607a86632852/acf11?theme=solarized_dark) – Abram

+0

Matt - Почему вы используя цикл «list» вместо цикла «query»? Из описания кажется, что они используют нормализованную структуру таблицы. – Leigh

+0

Вы правы, я обновил, чтобы использовать цикл запроса. –

Смежные вопросы