【发布时间】: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 我在一个与动态发送端口中的附件相关的旧问题中做了一个相当广泛的回答,这可以帮助你。在这里查看:stackoverflow.com/questions/43917794/…
标签: c# email dynamic smtp biztalk