正文部分在 biztalk 动态 SMTP 发送端口中作为附件发送

Posted

技术标签:

【中文标题】正文部分在 biztalk 动态 SMTP 发送端口中作为附件发送【英文标题】:Body part is sent as attachment in biztalk dynamic SMTP Send port 【发布时间】:2019-11-14 18:50:57 【问题描述】:

电子邮件正在使用 biztalk SMTP 动态发送端口获取附件中的正文和附件。

使用 C# 助手类作为:

namespace OutputStringContent

    [Serializable]
    public class SMTPTestHelper
    
        public static XLANGMessage AttachStreamToSmtpMessage(XLANGMessage xlangMsg, String strAttach)
        
            byte[] memBuffer = Encoding.ASCII.GetBytes(strAttach);
            IStreamFactory streamFactory = new BinaryStreamFactory(new MemoryStream(memBuffer));
            xlangMsg.AddPart(streamFactory, "AttachedMessage");
            xlangMsg["AttachedMessage"].SetPartProperty(typeof(Microsoft.XLANGs.BaseTypes.ContentType), "text/plain; name=text.txt");

            return xlangMsg;
        
    

在 Orchestration 中的消息分配形状中:

msgSendEmail.MessagePart_1 = new OutputStringContent.RawString(msgEmail.EmailBody);
msgSendEmail.MessagePart_1(Microsoft.XLANGs.BaseTypes.ContentType) = "text/plain";
msgSendEmail = OutputStringContent.SMTPTestHelper.AttachStreamToSmtpMessage(msgSendEmail,msgEmail.EmailAttachements);

msgSendEmail(SMTP.From) = msgEmail.EmailFrom;
msgSendEmail(SMTP.SMTPTo) = msgEmail.EmailTo;
msgSendEmail(SMTP.Subject) = msgEmail.EmailSubject;
//msgSendEmail(SMTP.EmailBodyText) = msgEmail.EmailBody;
msgSendEmail(SMTP.EmailBodyTextCharset) = "UTF-8";
msgSendEmail(SMTP.MessagePartsAttachments) = 2;

msgSendEmail(SMTP.SMTPHost) = "smtp1.tucaas.com";
msgSendEmail(SMTP.SMTPAuthenticate) = 0;

Port_SendEmail(Microsoft.XLANGs.BaseTypes.Address) = "mailto:"+msgEmail.EmailTo;

预期结果:电子邮件不应将正文作为附件。

【问题讨论】:

为什么要使用 2 个消息部分? msgSendEmail(SMTP.MessagePartsAttachments) = 2; 因为我需要在电子邮件中发送附件。 您似乎只有 1 个附件。所以应该是 msgSendEmail(SMTP.MessagePartsAttachments) = 1; @Code_ABC 我在一个与动态发送端口中的附件相关的旧问题中做了一个相当广泛的回答,这可以帮助你。在这里查看:***.com/questions/43917794/… 【参考方案1】:

将“MIME/SMIME 编码器”管道组件添加到您的发送端口管道,并将“将正文部分作为附件发送”属性设置为“False”。 That 应该可以解决问题。

【讨论】:

以上是关于正文部分在 biztalk 动态 SMTP 发送端口中作为附件发送的主要内容,如果未能解决你的问题,请参考以下文章

BizTalk 2010 SMTP 适配器中的附件非英语名称

BizTalk SMTP 发送带有附件的邮件(无编排,自定义发送管道组件)

在 Golang 中附加文件并通过 SMTP 发送时没有正文部分的电子邮件

BizTalk 发送适配器 HTTP 发布响应

BizTalk WCF-WebHTTP REST 客户端与正文和标题签名与静态端口

电子邮件消息:电子邮件消息的标题部分、电子邮件信封、电子邮件消息正文和 SMTP