在mailkit imap中仅显示附件链接

时间:2016-01-27 12:02:59

标签: c# .net imap gmail-imap mailkit

我只是想在邮件正文中显示要下载的附件链接,而不是最初下载附件。因为我不想每次都在我的服务器上下载和保存附件。

当用户点击该链接时,我想从gmail服务器下载该特定附件(" https://mail-attachment.googleusercontent.com/attachment/u/1/?xxxx-xxxx")

无论如何都有这样做吗?

1 个答案:

答案 0 :(得分:0)

MailKit没有提供任何方法,因为它不是IMAP支持的。

也就是说,有可能弄清楚如何根据MIME附件的属性构造URL。

根据我自己的某封电子邮件中的“下载”链接,Google似乎使用其X-Attachment-Id标头值来构建网址的realattid部分。它们可能还有其他变量,但很难确切知道其他值的来源。

下载网址中的attid值似乎是树中MIME附件的位置值,类似于MailKit的BodyPart.PartSpecifier字符串。

您可以随时使用MailKit的ImapFolder.GetBodyPart() API在用户请求时下载单个MIME部分,而不是尝试重新创建GMail的下载链接。

为了利用此API,您需要使用MessageSummaryItems.BodyStructure致电ImapFolder.Fetch()

您可以查看https://github.com/jstedfast/MailKit/blob/master/samples/ImapClientDemo/ImapClientDemo/MainWindow.cs,了解如何使用从MessageSummary.Body请求中获取的Fetch媒体资源。