2013-02-13 2 views
1

У меня есть запланированные задачи CF, которые высылают по электронной почте сводку телефонных звонков для пользователя admin. Я хочу добавить возможность отправлять сообщения по электронной почте определенным пользователям. Дополнительный отчет является динамическим для каждого администратора и хранится в таблице. Я не могу просто указать код отчета, поскольку он может измениться или не существовать для следующего пользователя. Может быть, я должен использовать CFHTTP, но я не разбираюсь в этом.coldfusion cfhttp post из запланированных задач

<cfloop query="qGetTelemateEmails">    
    <cfif trim(QGetTime.Call_Email_On_Hour) eq "" or  listfind(#QGetTime.Call_Email_On_Hour#,datepart("h",now()))> 
    <cfset TotalTime = 0> 
    <cfset NumberOfCalls = 0> 
    <cfmail ........></cfmail> 

Следующий код, где я хочу также отправить сообщение по электронной почте.

<cfquery name="QAdditionalReports" datasource="#request.dtsrc#"> 
Select * 
From Admin_Telemate_Additional_Query_Daily as a LEFT OUTER JOIN 
    Admin_Users AS C ON A.AdminID = C.adminID LEFT OUTER JOIN 
    Admin_Telemate_Available_Queries AS b ON A.description = b.description 
where a.adminid = #val(QGetTime.call_admin_user_id)# 
</cfquery> 
<cfif QAdditionalReports.recordcount gt 0> 
SEE CODE BELOW -------------------------------------------------------------  
</cfif> 

</cfif> 
</cfloop> 

Это код отчета, который я хочу включить/выполнить. Я получаю url кода из записи таблицы запросов.

<cfquery name="QGetCommEct" datasource="#request.dsn#"> 
     select * 
     from Q_ES_Communications_by_Search_Number 
     where upper(communication_type) = 'T' 
     and Date_Entered = '#dateformat(now(),"yyyy/mm/dd")#' 
    and consultant_id = <cfqueryparam cfsqltype="cf_sql_integer" value="#url.adminid#"> 
     order by date_Entered 
    </cfquery> 
    <cfmail> 
     <div style="text-align:center; font-weight:bold; ">Communications Files Query</div> 
    <table> 
    <tr> 
     <td> 
     <table style="font:Arial, Helvetica, sans-serif x-small; border:1px solid black; "> 
     <tr> 
     <td><strong>Type</strong></td> 
     <td><strong>Cons</strong></td> 
     <td><strong>Last Name</strong></td> 
     </tr> 
    <cfoutput query="QGetCommEct">  
    <tr valign="top"> 
     <td>#QGetCommEct.Communication_Type#-#QGetCommEct.Category#</td> 
      <td>#QGetCommEct.AS400_Initials#</td> 
      <td>#QGetCommEct.lastname#</td> 
     </tr> 
    </cfoutput>  
    </table> 
    </td> 
    </tr> 
</table> 
</cfmail> 

я заменил Cfif QAdditionalReports.recordcount GT 0 с

<cfloop query="QAdditionalReports"> 
<cfhttp url="#QAdditionalReports.QueryURL##QAdditionalReports.QueryName#?adminid=#val(QGetTime.call_admin_user_id)#&emailto=#qGetTelemateEmails.Telemate_Email#"> 
<cfmail to="[email protected]" from="[email protected]" subject="Recap of daily phone calls" type="html" spoolenable="false"><cfdump var="#cfhttp#"></cfmail> 
</cfloop> 

И письмо содержит;

struct 
Charset [empty string] 
ErrorDetail [empty string] 
Filecontent [empty string] 
Header HTTP/1.1 503 Server Error Content-Type: text/html Date: Wed, 13 Feb 2013 15:11:17 GMT Server: Microsoft-IIS/7.0 
Mimetype text/html 
Responseheader struct 
Content-Type text/html 
Date Wed, 13 Feb 2013 15:11:17 GMT 
Explanation Server Error 
Http_Version HTTP/1.1 
Server Microsoft-IIS/7.0 
Status_Code 503 

Statuscode 503 Server Error 
Text YES 

Это может быть то, что мне нужно сделат HTTPS

+4

чем вопрос? –

+1

'cfhttp' чрезвычайно прост. проверьте документы - http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_g-h_09.html –

+0

Я не вижу, где cfhttp входит в это уравнение. – Travis

ответ

0

Вы можете поместить код, который вы пытаетесь повторно использовать и «удаленный вызов» в ске или включить его с cfinclude.

Написание CFC было бы лучшим способом. Here is some documentation.

<cfcomponent ...> 
    <cffunction name = "additionalReports" ...> 
     <cfargument name = "adminid" ...> 
     <cfargument name = "emailto" ...> 

     <!--- dynamic query using your adminid here ----> 

     <cfmail to = "#arguments.emailTo#" ...> 
     <!--- nicely formated output ---> 
     </cfmail> 
    </cffunction> 
<cfcomponent> 

Вы назвали бы КЧХ в запланированной задаче как этот

<!--- make the object. assume the cfc is in the same folder named adminreports.cfc ---> 
<cfset reportObject = createObject("component", "adminReports")> 
<cfset reportObject.additionalReports(val(QGetTime.call_admin_user_id), qGetTelemateEmails.Telemate_Email)> 
+0

Думаю, я мог бы включить cfinclude в действие. Но что происходит, когда я добираюсь до следующего пользователя, и у них есть другой «дополнительный отчет» для cfinclude. Не содержит ли все-таки значение include из предыдущего вызова? И какова продолжительность cfcomponent. Я выполняю этот процесс каждый час в течение дня. – user990016

+0

Почему у вас есть разные файлы для каждого отчета? Я все еще понимаю только то, что вы пытаетесь выполнить. Сожалею. CFC живет на время запроса, поэтому каждый раз, когда процесс запускается, он создает новый объект. – Travis

+0

, но в любом случае вы можете использовать cfinclude с динамическим именем страницы, предполагая, что queryName - это ваше имя файла: '' – Travis

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