【问题标题】:How can I filter then modify emails using IMAP?如何使用 IMAP 过滤然后修改电子邮件?
【发布时间】:2010-11-19 18:34:59
【问题描述】:

我在 SO 上的另一篇文章中问过这个问题:

How can a read receipt be suppressed?

我一直在做自己的一些研究来尝试解决这个问题,通过 IMAP 访问电子邮件帐户似乎是一个很好的解决方案。我已成功访问自己的收件箱并将邮件标记为已读,没有问题。

我被要求在包含超过 23,000 封电子邮件的收件箱中执行相同的任务。我想先对该收件箱中的少量电子邮件进行测试,然后再让整个 23,000 人收到它。

这是我通过 telnet 运行的代码:

LOGIN user@mailserver.com password
SELECT Inbox
STORE 1:* flags \Seen  'this line marks all the emails as read

所以我的问题是,我怎样才能在特定的电子邮件组上执行 STORE 命令……比如说发送/来自特定帐户的电子邮件?有没有办法连接命令,如FETCH 然后STORE?或者有没有更好的方法来获取基于特定标准的电子邮件集合,然后只修改那些可以通过 IMAP 完成的电子邮件?

【问题讨论】:

    标签: imap


    【解决方案1】:

    看看 IMAP SEARCH 命令。语法真的很糟糕,但它可以让您搜索收件人或发件人,搜索主题或邮件正文中的某些单词。它将为您提供消息 ID 列表,您可以在调用 STORE 时使用这些消息 ID。

    【讨论】:

    • 我可以将 SEARCH 命令的结果提供给 STORE 命令吗?我希望在几百封电子邮件上运行 STORE 命令,这些电子邮件要么来自某个用户,要么属于某个日期范围……会编写某种小程序来接收 SEARCH 命令的结果并迭代在返回的每个 id 上调用 STORE 命令的结果是我应该考虑做的事情吗?
    • 当然!我不会通过 telnet 这样做,而且你不能说出“STORE SEARCH foo bar”的效果。您需要一种方法来临时存储 SEARCH 的结果,以便能够将其提供给 STORE。
    • Manni - 又一个愚蠢的问题。如果不通过 telnet,我应该如何建立连接? (使用 asp.net)System.Net.Sockets.TCPClient?
    • 对不起,我想我说的肯定有点混乱。我的意思是不要通过手动连接到您的服务器来执行此操作,而是以编程方式执行此操作。另一方面,我确信那里已经有某种用于 .net 的 IMAP 客户端库。
    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2012-04-19
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多