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

本文关键字:gmail 草稿 何使用 python | 更新日期: 2023-09-27 17:50:48

我总是用gmail来保存网页剪辑或笔记。我只是创建一个新邮件,编辑它并保存为草稿。在两年多的时间里,我在Gmail草稿文件夹里倾倒了1000多封邮件。我想用程序把它们都发给我自己。我做了一些研究,现在我可以使用python或c#通过IMAP加载我的gmail收件箱消息,或者创建邮件并通过SMTP发送它。然而,我仍然无法阅读草稿信息并将其发送给自己。

(为什么我使用GMail作为笔记存储,而不是笔记应用程序,如evernote, MS onenote,或苹果笔记?)因为电子邮件在任何平台或设备上都能得到更好的支持。通常有预先安装的电子邮件客户端,并且更容易找到或定义一个"创建新邮件"键盘快捷方式比"导出到evernote"键盘快捷方式。

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

如果您使用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);
            }
        }
    }
}