【发布时间】:2015-01-19 18:39:29
【问题描述】:
我正在尝试代表我的 LOB 应用程序的用户发送一些电子邮件。我正在使用 Office 365 连接服务 API,以便我可以使用 OAuth 进行身份验证。我的代码将发送电子邮件,但不显示任何附件。这是我的代码的一个孤立示例:
static async void SendUsingOutlookClient(CommunicationRow me, OutlookServicesClient outlook)
{
var m = new Message();
m.From = ToRecipient(me.From);
m.Body = new ItemBody { Content = me.Body };
if (me.IsBodyHtml)
m.Body.ContentType = BodyType.HTML;
else
m.Body.ContentType = BodyType.Text;
m.Subject = me.Subject;
m.CcRecipients.Add(me.Cc);
m.BccRecipients.Add(me.Bcc);
m.ToRecipients.Add(me.To);
foreach (var attach in me.Attachments)
{
var file = attach.File;
var fileversion = file.GetVersion(attach.Version);
string fullpath = LibraryServiceImpl.GetFullNameInArchive(fileversion);
var mattach = new FileAttachment { Name = file.Name, ContentId = attach.ContentId, ContentLocation = fullpath, ContentType = GraphicUtils.DetermineMime(Path.GetExtension(fullpath)) };
if (file.Name.MissingText())
mattach.Name = attach.ContentId + fileversion.FileExtension;
m.Attachments.Add(mattach);
}
await outlook.Me.SendMailAsync(m, true);
}
我使用的 OutlookServicesClient 在这里找到 https://visualstudiogallery.msdn.microsoft.com/a15b85e6-69a7-4fdf-adda-a38066bb5155
【问题讨论】:
-
你有没有通过代码..?在 foreach 循环的这一行上,
me.Attachments的值是什么,您在哪里声明附件对象..?也许这个链接可能会帮助stackoverflow.com/questions/1195111/… 这也可以使用 C# .netSystem.Mail.net轻松完成 -
@MethodMan 发送电子邮件不是问题,单步执行代码也不会告诉我太多信息。我的电子邮件到达预定目的地时没有任何附件。根据我对问题的描述,我正在尝试使用 OAuth 对发件人进行身份验证。我知道无法将它与 System.Mail.Net.SmtpClient 一起使用。该类中的凭据需要输入密码。
-
单步执行代码会告诉你很多..正如我之前问过的..在发送电子邮件之前附件的价值是什么..也许你没有得到完整的文件路径/名称例如附件的..这也必须是异步发送..帮助我们帮助你..谢谢
-
@MethodMan 是的,当我逐步附加 pdf 时,mattach 的属性似乎是合理的,我可以访问完整路径中的文件。我添加了一个指向此处使用的库的链接,我只能访问 Async 方法。