ColdFusion发送未找到的邮件资源

时间:2014-12-10 09:20:19

标签: email coldfusion

我发送的邮件如下所示。但是我发送的一些电子邮件被抛出,但下面有例外:

<cfif !IsNull(SignatureDetails) && len(trim(SignatureDetails.getDigitalSignature()))>
    <!--- Embed digital signature if present via the local file system. --->
    <cfset variables.signatureUrl = '../../../urls/files/messages/spreadsheet/rows/columns/' & #SignatureDetails.getDigitalSignature()#>
    <cfmailparam file="#ExpandPath('#variables.signatureUrl#')#" contentid="digitalSignature" disposition="inline"/>
</cfif>

例外:

object.email.sendTemplateEmail: The resource C:\Data\map\urls\files\messages\spreadsheet\rows\columns\column.jpg was not found. The root cause was: ''. 

正确的路径应为:C:\ Data \ urls \ files \ messages \ spreadsheet \ rows \ columns \ column.jpg

问题是它只发生在选择的几封电子邮件上。该目录是如上所述的硬编码,而签名的名称是从我的数据库中的表中提取的。

1 个答案:

答案 0 :(得分:3)

问题似乎是在这一行中使用相对路径

<cfset variables.signatureUrl = '../../../urls/files/messages/spreadsheet/rows/columns/' & #SignatureDetails.getDigitalSignature()#>

代码可能是从稍微不同的目录路径运行,具体取决于正在执行的页面,因此,上升3个目录可能无法为您提供所需的路径。当ColdFusion无法找到您定义的路径时,它会将知道路径附加到正在处理的文件所在路径的末尾。

您可以通过创建到签名(或附件目录)目录的映射(您在Application.cfc中定义映射)并使用它来添加签名来更正此问题。

用于指向&#39;签名&#39;并命名为&#39;签名&#39;

<cfset variables.signatureUrl = '/columns/' & SignatureDetails.getDigitalSignature()>

用于指向&#39;附件的映射&#39;并命名为&#39;附件&#39;

<cfset variables.signatureUrl = '/rows/columns/' & SignatureDetails.getDigitalSignature()>

如果您需要有关在Application.cfc中创建映射的信息,请查看link