控制使用cfmail

时间:2019-07-16 15:54:24

标签: coldfusion

this question上,我问应该是什么电子邮件结构。这个问题是关于如何使用cfmail(以及cfmailpart,cfmailparam等)产生正确的结构的。

所需的结构为:

multipart/mixed
  multipart/alternative
    text/plain
    text/html
  image/jpeg
  application/pdf

我当前获得的代码:

 <cfmail from='"No Reply" <noreply@example.com>' subject="Test 123" to="my_outlook_address@example.com,my_gmail_address@gmail.com">

  <!--- Some code to get a query of attachment content here... --->

  <cfloop query="qAttachments">
      <!---
          Some code to get the attachment file data here and put it in a variable named `myfile`... 

          myfile structure:
          {
              fileName: <string>,
              fileContent: <base64 encoded file content>,
              mimeType: <image/jpeg for the one, application/pdf for the other>
          }
      --->
      <cfmailparam disposition="attachment" contentID="#myfile.fileName#" content="#myfile.fileContent#" file="#myfile.fileName#" type="#myfile.mimeType#" />

  </cfloop>

  <cfmailpart type="plain">
      My plain text
  </cfmailpart>

  <cfmailpart type="html">
      <strong>My fancypants text</strong>
  </cfmailpart>
</cfmail>

但是,这会产生以下结构:

multipart/mixed
  multipart/alternative
    text/plain
    multipart/related
      text/html
      image/jpeg
      application/pdf

我尝试过这样的代码:

<cfmail from='"No Reply" <noreply@example.com>' subject="Test 123" to="my_outlook_address@example.com,my_gmail_address@gmail.com">

  <!--- Some code to get a query of attachment content here... --->

  <cfloop query="qAttachments">       
      <cfmailparam disposition="attachment" contentID="#myfile.fileName#" content="#myfile.fileContent#" file="#myfile.fileName#" type="#myfile.mimeType#" />

  </cfloop>

  <cfmailpart type="multipart/alternative">
    <cfmailpart type="plain">
      My plain text
    </cfmailpart>

    <cfmailpart type="html">
      <strong>My fancypants text</strong>
    </cfmailpart>
  </cfmailpart>
</cfmail>

但是它只是转到cfadmin中未发送的电子邮件列表。

对于这两个版本的代码,我都尝试在type标签本身上获取cfmail属性的值:

  • 普通
  • html
  • 多部分/混合
  • multipart / alternative

无济于事。

如何在ColdFusion中实现所需的MIME结构?

1 个答案:

答案 0 :(得分:1)

我采用的方法可能并不理想,但是它在我定位的所有3个邮件客户端中都有效。我最终要做的是:

  • 对于任何图像附件,我将在contentID标签上包含一个cfmailparam属性,并在其中添加一个<img src="cid:...">值的contentID
  • 对于所有其他附件,我省略了contentID标签上的cfmailparam属性

最终结果是,所有图像都以内联方式显示在邮件正文中,而所有其他文件都显示为常规文件附件。

基于我假设谁是CF团队开发人员的讨论,https://tracker.adobe.com/#/view/CF-4166939我给人的印象是MIME标头结构由ColdFusion控制,不能由ColdFusion开发人员直接管理。不幸的是,但至少我有一个解决方法。希望这会对某人有所帮助。