Атрибут группы cfmail выдает ошибку
У меня есть запрос, который возвращает несколько результатов только с данными в одном столбце, как разные для конкретного номера отчета. Я хочу сгруппировать результаты по одному номеру отчета и отправить электронное письмо одному человеку для всех действий. Ниже мой запрос
<cfquery name="qryCorrectiveDueDate" datasource="#application.config.DSN#">
SELECT FR.report_id,
FR.report_number,
IR.investigation_id,
CA.action_who,
CA.action_who_email,
CA.action_what,
CA.action_when,
CA.action_type,
CA.action_complete_date
FROM xyz_gir.dbo.xyz_flash_report AS FR,
xyz_gir.dbo.xyz_investigation_report AS IR,
xyz_gir.dbo.xyz_corrective_actions AS CA
WHERE FR.report_id = IR.report_id
AND IR.investigation_id = CA.investigation_id
AND DATEDIFF(day,CA.action_when,GETDATE()) > 1
AND CA.action_complete_date IS NULL
ORDER BY IR.investigation_id
</cfquery>
Результирующий набор выглядит примерно так:
report_id report_number investigation_id action_who action_who_email action_what action_when action_type action_complete_date
2 13-0002 2 Hans-Joerg Wolf hans-joerg.wolf@xyz.com Action 1 00:00.0 Repair NULL
4 13-0004 3 Robert Michael robert.michael@xyz.com fghfgh 00:00.0 Repair NULL
5 13-0005 4 Masoud Aghel Masoud.Aghel@xyz.com sdfsdfsdf 00:00.0 Repair NULL
5 13-0005 4 Masoud Aghel Masoud.Aghel@xyz.com hhjghj 00:00.0 Repair NULL
Что я хочу сделать, так это отправить одно электронное письмо со значением action_who_email для нескольких строк с одним и тем же идентификатором расследования. Если я использую атрибут группы cfoutput, это вывод:
hans-joerg.wolf@xyz.com
Report ID: 2
Report Number: 13-0002
investigation id: 2
Action Who :Hans-Joerg Wolf
Action What: Action 1
Action When: 2013-04-26 00:00:00.0
Action type:Repair
Action Complete Date:
robert.michael@xyz.com
Report ID: 4
Report Number: 13-0004
investigation id: 3
Action Who :Robert Michael
Action What: fghfgh
Action When: 2013-05-05 00:00:00.0
Action type:Repair
Action Complete Date:
Masoud.Aghel@xyz.com
Report ID: 5
Report Number: 13-0005
investigation id: 4
Action Who :Masoud Aghel
Action What: sdfsdfsdf
Action When: 2013-04-29 00:00:00.0
Action type:Repair
Action Complete Date:
Report ID: 5
Report Number: 13-0005
investigation id: 4
Action Who :Masoud Aghel
Action What: hhjghj
Action When: 2013-04-29 00:00:00.0
Action type:Repair
Action Complete Date:
И это мой cfoutput:
<cfoutput query="qryCorrectiveDueDate" group="investigation_id">
<b>#action_who_email#</b><br>
<cfoutput>
Report ID: #report_id#</br>
Report Number: #report_number#</br>
investigation id: #investigation_id#</br>
Action Who :#action_who#</br>
Action What: #action_what#</br>
Action When: #action_when#</br>
Action type:#action_type#</br>
Action Complete Date: #action_complete_date#</br></br>
</cfoutput></br>
</cfoutput>
Но если я сделаю то же самое с cfmail для запроса и сгруппирую его, это вызовет исключение javax.mail.MessagingException: Не удалось подключиться к узлу SMTP: 127.0.0.1, порт: 25; ошибка.
Мой код CFMAIL как ниже
<cfmail query="qryCorrectiveDueDate" from="EHS@jdsu.com" to="#action_who_email#" group="#investigation_id#" subject="xyz">
<p>#action_who#,</p>
<p>Due Dates for Corrective Actions for the Incident #report_number# have lapsed </p>
<p>You are receiving this notification, as the Manager/Supervisor to implement the Corrective Actions </p>
<p>Incident No: #report_number# </p>
<p>Corrective Action: #action_what#</p>
<p>Due Date: #action_when#</p>
</cfmail>
Обратите внимание, что я запускаю Coldfusion локально с xampp, и хотя письма не доставляются, я могу видеть их в папке недоставленных в Coldfusion. В этом же файле есть другие теги cfmail, которые не выдают исключение подключения, если этот тег cfmail закомментирован. Я извиняюсь, если мой вопрос очень общий, но я должен либо сделать это с Coldfusion, либо мне, возможно, придется написать функцию, которая будет обрабатывать мой набор результатов как временную таблицу. Я считаю, что с простудой легче, если я знаю, как заставить это работать.
2 ответа
Теперь, когда вы удалили хеш-теги, ваша проблема, вероятно, отсутствует cfoutput
тег в письме. Аналогично атрибуту группы cfoutput
тег, вам нужен другой cfoutput
тег для циклического перебора сгруппированных записей.
Протестировано на CF8 локально.
<cfmail query="q" group="field">
<cfoutput>
#field# - #field2#
</cfoutput>
</cfmail>
Я считаю, что ваша настоящая проблема в том, что вы используете знаки фунта в атрибуте группы.
group="#investigation_id#"
должно быть group="investigation_id"
--Редактировать--
Приведенный ниже ответ является спорным, поскольку ОП вводит в заблуждение.
Я думаю, это потому, что вам не нужно cfoutput
теги внутри cfmail
тег. Странно, что это вызывает ошибку почты, хотя.
тем не мение...
Я бы попробовал использовать cfsavecontent
затем выведите переменную в cfmail
,
<cfsavecontent variable = "mailBody">
<cfoutput query="qryCorrectiveDueDate" group="investigation_id">
<b>#action_who_email#</b><br>
<cfoutput>
Report ID: #report_id#</br>
Report Number: #report_number#</br>
investigation id: #investigation_id#</br>
Action Who :#action_who#</br>
Action What: #action_what#</br>
Action When: #action_when#</br>
Action type:#action_type#</br>
Action Complete Date: #action_complete_date#</br></br>
</cfoutput>
</br>
</cfoutput>
</cfsavecontent>
<cfmail ...>
#mailBody#
</cfmail>