Как очистить корзину Gmail с помощью C # - PullRequest
3 голосов
/ 24 марта 2012

Я пытался получить доступ к своему почтовому ящику Gmail с помощью библиотеки InterImap . Он показывает мои сообщения там, но не может удалить сообщения. Я также нашел метод "EmptyFolder ()", но он не работает.

Все, что у меня сработало, это MoveMessageToFolder (), но это не то, что мне нужно.

Пожалуйста, помогите мне очистить корзину с C #, используя ту же или любую другую библиотеку. Мне нужен пример кода, который делает это.

Вот код, который мне удалось написать.

var config = new InterIMAP.IMAPConfig("imap.gmail.com", "<my gmail username>", "<my gmail password", true, true, "");
var client = new InterIMAP.Synchronous.IMAPClient(config, new InterIMAP.IMAPLogger(config, new object[] { }), 1);
var trash = client.Folders["[Gmail]"].SubFolders["Trash"];
trash.EmptyFolder();
client.Logoff();

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 08 октября 2016

Мне не нравится удалять корзину в Gmail вручную.Это полно спама каждый день.Поэтому я скопировал код C #, чтобы сделать работу за меня.Я скачал и использовал mail.dll из Limilabs, ознакомительной версии.Создайте пароль Gmail для приложений.Вот код:

using System;
using Limilabs.Client.IMAP;
using System.Collections.Generic;

namespace delete_gmail_trash
{
    class Program
    {
        static void Main(string[] args)
        {
            using (Imap imap = new Imap())
            {
                imap.ConnectSSL("imap.gmail.com");
                imap.UseBestLogin("username@gmail.com", "password for Gmail apps");
                // Recognize Trash folder
                List<FolderInfo> folders = imap.GetFolders();

                CommonFolders common = new CommonFolders(folders);

                FolderInfo trash = common.Trash;
                // Find all emails we want to delete
                imap.Select(trash);
                List<long> uidList = imap.Search(Flag.All);
                foreach (long uid in uidList)
                {
                    imap.DeleteMessageByUID(uid);
                    Console.WriteLine("{0} deleted", uid);
                }
                Console.WriteLine("Press any key to exit.");
                Console.ReadKey();
                imap.Close();
            }    
        }
    }
}
1 голос
/ 02 апреля 2012

Если вы удалите сообщение из папки «Входящие» или из одной из своих пользовательских папок, оно все равно будет отображаться в [Gmail] / Вся почта.

И вот почему: в большинстве случаев при удалении сообщения просто удаляется ярлык этой папки из сообщения, включая ярлык, идентифицирующий сообщение как входящее в папку «Входящие».

[Gmail] / Вся почта показывает все ваши сообщения, независимо от того, прикреплены ли к ним ярлыки.

Если вы хотите навсегда удалить сообщение из всех папок:

  1. Переместите его в папку [Gmail] / Корзина.
  2. Удалите его из папки [Gmail] / Корзины.

Более подробную информацию вы можете найти здесь: http://www.limilabs.com/blog/delete-email-permanently-in-gmail

...