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

如何使用c#或python发送所有gmail草稿,c#,python,smtp,gmail,imap,C#,Python,Smtp,Gmail,Imap,我总是用gmail保存网络剪辑或笔记。我只需创建一封新邮件,编辑它并另存为草稿。两年多来,我在我的Gmail草稿文件夹中转储了1000多条信息。我想通过编程将它们全部发送给我自己。我做了一些研究,现在我能够使用python或c#通过IMAP加载我的gmail收件箱消息,或者创建一封邮件并通过SMTP发送。然而,我仍然无法阅读邮件草稿并将其发送给自己 (为什么我要使用GMail作为便笺存储,而不是evernote、MS onenote或Apple notes等便笺应用程序?因为任何平台或设备都更好

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

(为什么我要使用GMail作为便笺存储,而不是evernote、MS onenote或Apple notes等便笺应用程序?因为任何平台或设备都更好地支持电子邮件。通常有预安装的电子邮件客户端,而且查找或定义“创建新邮件”键盘快捷键比“导出到evernote”键盘快捷键更容易。)

如果您使用,以下是您的操作方法:

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);
            }
        }
    }
}
使用系统;
Net系统;
使用系统线程;
使用MailKit.Net.Imap;
使用MailKit.Net.Smtp;
使用邮箱;
使用MimeKit;
命名空间测试客户端{
班级计划
{
公共静态void Main(字符串[]args)
{
使用(var client=new ImapClient()){
var凭证=新网络凭证(“jimbo”、“密码”);
client.Connect(新Uri(“imaps://imap.gmail.com),取消令牌。无);
验证(凭据、CancellationToken.None);
var folder=client.GetFolder(SpecialFolder.Drafts);
folder.Open(FolderAccess.ReadWrite,CancellationToken.None);
使用(var smtp=new SmtpClient()){
smtp.Connect(新Uri(“smtps://smtp.gmail.com),取消令牌。无);
smtp.Authenticate(凭据、CancellationToken.None);
var index=newint[folder.Count];
对于(int i=0;i
为什么您需要将它们发送给自己?你还没有访问它们吗?原因有三:1。更容易查看。默认情况下,草稿邮件将在一个小文本框中打开。2.这更容易管理。它越来越大,我不想让一些真正的草稿邮件和我的笔记混在一起。3.草稿邮件是可编辑的,因此可能会被错误删除。e、 例如,有一次我误按了剪切而不是复制,然后空邮件被自动保存……打开草稿文件夹[Gmail]/Drafts,获取每封邮件的全部内容,并通过SMTP发送给自己。可能根据需要调整收割台的行和行。