我只想在邮件正文中显示要下载的附件链接,而不是最初下载附件。因为我不想每次都下载附件并将其保存在我的服务器上。
当用户单击该链接时,我想从 gmail 服务器下载该特定附件(“ https://mail-attachment.googleusercontent.com/attachment/u/1/?xxxx-xxxx ”)
有没有办法做到这一点?
我只想在邮件正文中显示要下载的附件链接,而不是最初下载附件。因为我不想每次都下载附件并将其保存在我的服务器上。
当用户单击该链接时,我想从 gmail 服务器下载该特定附件(“ https://mail-attachment.googleusercontent.com/attachment/u/1/?xxxx-xxxx ”)
有没有办法做到这一点?
MailKit 不提供这样做的任何方式,因为它不是 IMAP 支持的东西。
也就是说,有可能弄清楚如何根据 MIME 附件的属性构造 URL。
根据检查我自己的一封电子邮件中的下载链接,谷歌似乎使用他们的X-Attachment-Id
标题值来构造realattid
URL 的一部分。它们可能还有其他变量,但很难确切知道其他值的来源。
下载 url 中的attid
值似乎是树中 MIME 附件的位置值,类似于 MailKit 的BodyPart.PartSpecifier
字符串。
ImapFolder.GetBodyPart()
当用户请求它们时,您总是可以使用 MailKit 的 API 下载单个 MIME 部分,而不是尝试重新创建 GMail 的下载链接。
为了利用此 API,您需要调用ImapFolder.Fetch()
.MessageSummaryItems.BodyStructure
您可以查看https://github.com/jstedfast/MailKit/blob/master/samples/ImapClientDemo/ImapClientDemo/MainWindow.cs以了解如何使用从请求中MessageSummary.Body
返回的属性。Fetch