我发送的邮件如下所示。但是我发送的一些电子邮件被抛出,但下面有例外:
<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
问题是它只发生在选择的几封电子邮件上。该目录是如上所述的硬编码,而签名的名称是从我的数据库中的表中提取的。
答案 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。