c# - 如何使用 c# 或 python 发送所有 gmail 草稿

标签 c# python smtp gmail imap

我总是使用 Gmail 来保存网页剪辑或笔记。我只需创建一封新邮件,对其进行编辑并另存为草稿。两年多来,我已将 1000 多封邮件转储到 Gmail 草稿文件夹中。我想以编程方式将它们全部发送给自己。我做了一些研究,现在我可以使用 python 或 c# 通过 IMAP 加载我的 gmail 收件箱消息,或者创建邮件并通过 SMTP 发送。但是我仍然无法阅读草稿消息并将其发送给自己。

(为什么我使用 GMail 作为笔记存储,而不是使用 Evernote、MS OneNote 或 Apple Notes 等笔记应用程序?因为电子邮件在任何平台或设备上都能得到更好的支持。通常有预装的电子邮件客户端,而且更容易查找或定义“创建新邮件”键盘快捷键而不是“导出到 Evernote”键盘快捷键。)

最佳答案

如果您使用MailKit ,您可以这样做:

using System;
using System.Net;
using System.Threading;

using MailKit.Net.Imap;
using MailKit.Net.Smtp;
using MailKit;
using MimeKit;

namespace TestClient {
    class Program
    {
        public static void Main (string[] args)
        {
            using (var client = new ImapClient ()) {
                var credentials = new NetworkCredential ("jimbo", "password");

                client.Connect (new Uri ("imaps://imap.gmail.com"), CancellationToken.None);
                client.Authenticate (credentials, CancellationToken.None);

                var folder = client.GetFolder (SpecialFolder.Drafts);
                folder.Open (FolderAccess.ReadWrite, CancellationToken.None);

                using (var smtp = new SmtpClient ()) {
                    smtp.Connect (new Uri ("smtps://smtp.gmail.com"), CancellationToken.None);
                    smtp.Authenticate (credentials, CancellationToken.None);

                    var indexes = new int[folder.Count];
                    for (int i = 0; i < folder.Count; i++) {
                        var message = folder.GetMessage (i, CancellationToken.None);

                        // if you haven't already specified a recipient, do it now:
                        message.To.Add (new MailboxAddress ("Jimbo", "jimbo@gmail.com"));

                        smtp.Send (message, CancellationToken.None);
                        indexes[i] = i;
                    }

                    // if you also want to delete the messages on the IMAP server:
                    folder.AddFlags (indexes, MessageFlags.Deleted, true, CancellationToken.None);
                    folder.Close (true, CancellationToken.None);

                    smtp.Disconnect (true, cancellationToken.None);
                }

                client.Disconnect (true, cancellationToken.None);
            }
        }
    }
}

关于c# - 如何使用 c# 或 python 发送所有 gmail 草稿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22458537/

相关文章:

c# - volatile 应该与(非并发)集合一起使用吗?

python - 使用 matplotlib 的 pcolormesh() 在状态行中显示鼠标指针位置的 z 值

python - 在 tkinter Canvas 中显示图像

smtp - System.Net.Mail.SmtpException : Service not available,关闭传输 channel 。服务器响应为: 4. 4.2

linux - Postfix 554 中继访问被拒绝错误

Perl Mail::Sendmail 无法连接到 SMTP 服务器

c# - 带有图像比较的自动化测试

c# - 为什么这个 Linq Where 子句不过滤结果

c# - 以编程方式关闭 Windows Phone 应用程序

python - xtick 标签中的 Matplotlib 换行符