c# - 在 mailkit imap 中仅显示附件链接

标签 c# .net imap gmail-imap mailkit

我只是想在邮件正文中显示要下载的附件链接,而不是一开始就下载附件。因为我不想每次都下载附件并将其保存在我的服务器上。

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

有什么办法吗?

最佳答案

MailKit 不提供任何执行此操作的方法,因为它不是 IMAP 支持的东西。

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

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

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

与其尝试重新创建 GMail 的下载链接,不如使用 MailKit 的 ImapFolder.GetBodyPart()用于在用户请求时下载各个 MIME 部分的 API。

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

可以看看https://github.com/jstedfast/MailKit/blob/master/samples/ImapClientDemo/ImapClientDemo/MainWindow.cs查看如何使用从 Fetch 请求返回的 MessageSummary.Body 属性。

关于c# - 在 mailkit imap 中仅显示附件链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35036855/

相关文章:

c# - 尝试使用 C# 尽可能简洁

c# - Freezable.IsFrozen 和 DependencyObject.IsSealed

c# - 根据使用 imap 的验证程序,远程证书无效

python - 是否可以在一个请求中通过 imap 搜索 gmail 中的多个 X-GM-THRID?

c# - 从旧 URL 重定向到最新已知 URL 的巧妙方法

c# - ASP.NET Core 中真正无缓冲的文件上传?

c# - 使用 MVVM 模式将列表传递给类

c# - Xamarin Forms - 点击标签时打开多个页面

.net - 修复错误的 XML 文件(例如未转义等)

java - 如何使用JavaMail从Google Mail(Gmail)中读取带有多个标签的邮件?