c# - 在 c# EWS 中将 FileAttachment 附加到 message.Attachments
问题描述
我正在尝试在FileAttachment
消息中添加一个。不幸的是message.Attachments.AddFileAttachment()
,我要求一条我没有的路径。我有FileAttachment
另一封邮件的直邮。
在这里我得到附件:
EmailMessage oldEmailMessage = EmailMessage.Bind(service, olderSoxMail.Id);
// load attachments
FileAttachment fileAttachment = newEmailMessage.Attachments[0] as FileAttachment;
fileAttachment.Load();
在这里,我尝试将附件附加到邮件中
public static void ComposeEmail(string recipient, string subject, string body, FileAttachment[] attachment = null)
{
var map = new Dictionary<char, string>() {
{ 'ä', "ae" },
{ 'ö', "oe" },
{ 'ü', "ue" },
{ 'Ä', "Ae" },
{ 'Ö', "Oe" },
{ 'Ü', "Ue" },
{ 'ß', "ss" }
};
recipient = recipient.Aggregate(
new StringBuilder(),
(sb, c) =>
{
string r;
if (map.TryGetValue(c, out r))
return sb.Append(r);
else
return sb.Append(c);
}).ToString();
EmailMessage message = new EmailMessage(service);
message.Subject = subject;
message.Body = body;
message.ToRecipients.Add(recipient);
foreach (FileAttachment attach in attachment)
{
// COMPILER ERROR HERE: Cannot Convert from FileAttachment to Path (string)
message.Attachments.AddFileAttachment(attach);
// END ERROR
}
message.SendAndSaveCopy();
}
你知道我可以如何添加FileAttachment
吗?
解决方案
现在,您收到的文件附件存在于 Exchange 服务器上。您可以下载这些附件并存储路径并将这些路径附加到您的新电子邮件中。
更好的解决方案是将附件作为流读取并将它们直接附加到邮件中,而无需先将它们保存到磁盘。
foreach (var fileAttachment in fileAttachments)
{
var stream = new System.IO.MemoryStream(fileAttachment.Content);
message.Attachments.AddFileAttachment(fileAttachment.Name, stream);
}
推荐阅读
- c# - 异步调用 AWS RDS CreateDBSnapshotAsync “设置并忘记它”
- javascript - 在 Webix 中的数据表上使用 getContext 时,Ajax 不起作用
- javascript - 使用 Vue 组件内的 Rangy 恢复文本范围时出现错误消息“标记元素已被删除”
- python - 如何使用 Tkinter GUI 正确实现多线程?
- python - 移动平均条件到其他列
- javascript - javascript代码中变量php的值
- android - 使用 Request 添加方法时,Kotlin 使用 OkHttp 编译错误
- java - 使用 Scala 或 Java 将 .p12 转换为 .pem 以在 AWS SNS 中注册
- squarespace - 如何为 Squarespace Commerce API 查找产品变体的变体 ID
- apache-spark - 带有 USING 和 PARTITIONED BY 子句的 spark hive 创建表的有效语法是什么?