Aspose.Email  для .NET

Сгенерировать адрес Gmail с использованием .NET

Создайте свой собственный временный генератор Gmail с паролем с помощью C#

  Скачать бесплатную пробную версию
 
 

Генератор Gmail — это довольно распространенный способ управления подписками на электронную почту. По сути, это аналог провайдера временных адресов электронной почты, но гораздо более гибкий, надежный и безопасный.

Суть генератора заключается в создании дополнительных адресов Gmail. Вы можете использовать эти дополнительные адреса при регистрации на различных сайтах. Эти сайты, скорее всего, будут отправлять электронные письма на предоставленные вами адреса. Поскольку адреса дополнительные, все письма будут приходить на ваш основной адрес. Но при этом дополнительный адрес, созданный приложением или подготовленный вручную, будет указан в качестве получателя письма.

Поиск писем по адресу получателя позволит вам фильтровать электронные письма и выполнять автоматические действия с ними. Один раз или постоянно. Вы также можете поймать сайты, которые передают ваш адрес третьим лицам без вашего согласия.

Например, предположим, что вы сгенерировали дополнительный адрес username+for.spam.sender@gmail.com . Затем вы передали его на сайт spam-sender.com. Через некоторое время вы можете получить письмо с какого-то другого сайта, например, from other-sender.com, но получателем будет username+for.spam.sender@gmail.com . В любой другой ситуации вы не смогли бы выяснить, почему other-sender.com отправляет вам рекламные электронные письма, но поскольку вы использовали альтернативный адрес, легко увидеть, что spam-sender.com поделился вашим адресом с третьими лицами. Если это так, нет смысла отписываться от рассылок этих сайтов. Ваш дополнительный адрес, вероятно, уже был включен в какую-то публичную базу для отправки нежелательных электронных писем. Будет гораздо проще, если вы просто заблокируете все почтовые сообщения, приходящие на этот дополнительный адрес. Было бы еще лучше, если бы вы настроили автоматическое перемещение таких электронных писем в папку для спама. Эта настройка значительно усложнит жизнь этих сайтов, поскольку Gmail будет знать, что эти сайты отправляют спам.

Итак, давайте разберемся, как реализовать такой генератор с помощью Aspose.Email для .NET.

Создание временного Gmail и работа с ним

Чтобы сгенерировать дополнительный адрес Gmail, нам не нужно использовать Aspose.Email, мы не должны взаимодействовать со службой Gmail никаким образом. Любой дополнительный адрес, который вы выдумаете вручную или случайным образом, при соблюдении определенных правил, будет работать.

Так какие же эти правила?

Точки в адресе не важны. То есть, в вашем адресе перед символом ‘@’ вы можете как убирать точки, так и добавлять новые между любыми парами букв.

Перед символом ‘@’ вы можете добавить символ ‘+’ с любым набором букв и чисел после него. Примеры для адреса “username@gmail.com”:

Все эти адреса уже можно использовать при регистрации на сайтах. Но сами по себе они имеют мало смысла, потому что все сообщения, приходящие на эти адреса, будут попадать в ваш основной почтовый ящик. Поэтому стоит воспользоваться нашими инструкциями для работы с этими адресами.

Простой временный генератор Gmail

Итак, давайте создадим простой генератор случайных субадресов. Для этого мы добавим случайную строку между символами ‘+’ и ‘@’. Прежде всего, нам нужно сгенерировать случайную строку определенной длины, состоящую из определенного набора символов:

const string pattern = "abcdefghijklmnopqrstuvwxyz0123456789";
var patternLength = pattern.Length;
const int suffixLength = 10;
var random = new Random();
var generatedSuffix = Enumerable.Range(0, suffixLength)
    .Aggregate(
        new StringBuilder(),
        (builder, _) => builder.Append(pattern[random.Next(patternLength)]))
    .ToString();

Теперь нам нужно получить адрес электронной почты и добавить к нему сгенерированную случайную строку. Для этого мы будем использовать класс MailAdress из библиотеки Aspose.Email для .NET:

var originalAddress = new MailAddress("some.address@gmail.com");
var generatedAddress = new MailAddress(
    $"{originalAddress.User}+{generatedSuffix}@{originalAddress.Host}");
Console.WriteLine(generatedAddress);

Готово! Полученный адрес уже можно использовать при регистрации на сайтах. Сайты вскоре начнут отправлять сообщения на этот адрес. Давайте посмотрим, что мы можем сделать с этими сообщениями.

Использование IMAP-клиента для работы с сообщениями, полученными на сгенерированный Gmail

Во-первых, чтобы работать с сообщениями, полученными на дополнительный адрес, нам нужно подключиться к Gmail. IMAP прекрасно подходит для этого. Чтобы подключиться с использованием этого протокола, не забудьте настроить свою учетную запись для разрешения подключения к этому протоколу. Также вы можете упростить IMAP-соединение с помощью специального пароля приложения. Это позволит вам избежать необходимости выполнять OAuth-авторизацию, если вы не хотите реализовывать это в своем приложении. Просто перейдите в настройки вашей учетной записи Google, откройте раздел Безопасность и добавьте пароль приложения. Не забудьте сохранить сгенерированный пароль в безопасном месте и старайтесь не потерять его, потому что он дает вам полный доступ к вашей почте!

Итак, давайте используем класс ImapClient и подключимся к вашей учетной записи Gmail с использованием протокола IMAP:

var imapClient = new ImapClient("imap.gmail.com", 993, originalAddress.User, "password",
    SecurityOptions.SSLAuto);

Готово, теперь мы можем, например, получить все сообщения, полученные на сгенерированный адрес Gmail:

await imapClient.SelectFolderAsync("INBOX");
var queryBuilder = new ImapQueryBuilder();
queryBuilder.To.Contains(generatedAddress.Address);

var list = await imapClient.ListMessagesAsync(queryBuilder.GetQuery());

И вы получите абсолютно все такие письма. Неважно, с какого сайта они к вам пришли. Они могли прийти с сайта, которому вы дали сгенерированный адрес электронной почты. Могли прийти с другого сайта. С любого адреса. Мы фильтруем электронные письма не по отправителю, а по получателю. И это очень удобно.

Пометить, удалить, переместить сообщения, полученные на временный Gmail

Получив список писем, мы можем выполнять различные операции с ним. Притом все сразу. Вам не нужно находить их в своем почтовом ящике один за другим. Лишь пара команд, и все письма помечены как прочитанные, перемещены в другую папку или просто удалены. Просто не забудьте предварительно проверить, что список писем не пуст. Вы уже могли все удалить.

if (list.Count > 0)
{
    //Пометить как прочитанное
    await imapClient.AddMessageFlagsAsync(list, ImapMessageFlags.IsRead);
    //Переместить
    await imapClient.MoveMessagesAsync(list, "DestinationFolder");
    //Удалить
    await imapClient.DeleteMessagesAsync(list, commitNow: true);
}

Готово, ваш почтовый ящик очищен от спама.

Подписаться на временный адрес Gmail

Итак, что если вы не хотите постоянно удалять или помечать электронные письма, вызывая код выше вручную? Что если вы хотите удалять электронные письма, как только они приходят? Для этого, например, вы можете подписаться на новые сообщения и написать функцию, которая удаляет сообщения, как только они поступают на ваш адрес электронной почты.

await imapClient.StartMonitoringAsync((_, eventArgs) =>
    {
        var generated = eventArgs.NewMessages
            .Where(message => message.To
                .Any(address => address.Equals(generatedAddress)))
            .ToList();
        if (generated.Count == 0) return;

        imapClient.SelectFolder("INBOX");

        //Сделать что-то с полученными сообщениями. Например, пометить их как прочитанные:
        imapClient.AddMessageFlags(generated, ImapMessageFlags.IsRead);

        //или удалить их
        imapClient.DeleteMessages(generated, commitNow: true);
    },
    (_, errorEventArgs) => Console.WriteLine(errorEventArgs.Error.Message),
    "INBOX");

Этот алгоритм немного упрощен, потому что в случае ошибки подписка на новые сообщения будет прервана. Вы можете значительно улучшить алгоритм. Для этого вам нужно усовершенствовать алгоритм, улучшив обработку ошибок. Например, вы можете настроить возобновление мониторинга в случае ошибки, для этого вы можете использовать функцию ImapClient.ResumeMonitoring. Эта функция восстановит соединение с IMAP-сервером и возобновит мониторинг новых сообщений.

К сожалению, чтобы использовать этот алгоритм, вам все равно придется поддерживать программу постоянно запущенной. Как только вы прервёте выполнение программы, новые письма больше не будут автоматически удаляться. Но в этом случае есть другое решение.

Остановить получение сообщений на сгенерированный адрес Gmail

Gmail предоставляет алгоритмы фильтрации входящих сообщений. Эти алгоритмы работают на стороне сервиса и никогда не пропустят нежелательную почту, если вы, конечно, настроите их правильно. В данный момент, к сожалению, мы не можем предоставить вам функциональность для удаленной настройки таких фильтров с помощью C#, но планируем добавить такую возможность в ближайшем будущем. Пожалуйста, следите за нашими обновлениями!

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

//Сгенерировать шаблон поиска Gmail
var searchPattern = $"to:({generatedAddress.Address})";
Console.WriteLine(searchPattern);

Здесь переменная generatedAddress содержит сгенерированный Gmail, который был создан ранее в этой статье. Вышеуказанный код создаст шаблон поиска и выведет его в терминал. Скопируйте этот шаблон, потому что он вам понадобится при создании фильтра.

Теперь давайте шаг за шагом опишем, как вы можете создать фильтр. Для начала откройте веб-интерфейс электронной почты Gmail, он доступен по ссылке. В этом интерфейсе найдите строку поиска:

step1

В эту строку поиска вам нужно вставить шаблон, сгенерированный ранее в этой инструкции. Далее нужно нажать на кнопку “Показать параметры поиска”, которая указана на скриншоте ниже:

step2

В открывшемся окне параметров поиска вам не нужно вводить никаких дополнительных данных, сгенерированный шаблон уже настроил поиск. Просто нажмите на кнопку “Создать фильтр”.

step3

В результате откроется окно настроек фильтра:

step4

Здесь вы можете выбрать, что фильтр должен делать с электронными письмами, полученными на сгенерированный адрес Gmail. Вы можете автоматически архивировать их, помечать как прочитанные, удалять и так далее. Как правило, лучший вариант — удалить письма. Объем почтового ящика ограничен, нет смысла тратить его на хранение мусора. После того как вы выберете действия, которые вам подходят, нажмите на кнопку “Создать фильтр” снова.

Готово! Фильтр полностью настроен, так что больше никакая спам-рассылка вас не побеспокоит.

Управление фильтрами временного Gmail

Иногда сообщения, которые вы получаете с определенного сайта, становятся нежелательными. Они просто становятся мусором в вашем почтовом ящике и мешают вам находить в нем то, что действительно важно и интересно для вас. В результате вы создаете фильтр, который блокирует нежелательные сообщения с этого сайта. Но что делать, если сообщения с сайта больше не являются спамом? Например, вы хотите восстановить свой пароль. Сайт отправляет вам электронное письмо со ссылкой на форму сброса пароля, но вы не можете его получить, потому что фильтр сразу удаляет электронное письмо.

К счастью, есть элегантный выход из этой ситуации. Вы можете временно перенастроить фильтр так, чтобы он не удалял эти электронные письма. Или вы можете полностью удалить фильтр. Давайте посмотрим, как это можно сделать.

Сначала откройте веб-интерфейс Gmail. На открывшейся странице нажмите на кнопку “Настройки”:

step1

В открывшемся окне нажмите на кнопку “Просмотреть все настройки”:

step2

Откроется окно настроек учетной записи Gmail. В нем много вкладок для тонкой настройки вашего опыта работы с электронной почтой. Нас интересует вкладка “Фильтры и заблокированные адреса”. Откройте эту вкладку:

step3

На открывшейся вкладке вы увидите список фильтров для сгенерированных Gmails, которые вы создали ранее, а также, возможно, другие фильтры:

step4

По описанию фильтров вы сможете легко определить, какой из них отвечает за адрес, который вы хотите разблокировать. Нажав на кнопку “удалить”, вы можете навсегда отключить фильтр. Если вы нажмете на кнопку “изменить”, вы сможете перенастроить фильтр. Например, вместо удаления писем вы можете пометить их. Таким образом, вы можете сохранить фильтр и облегчить его включение в будущем. Отредактировав фильтр, вы сможете получать необходимые электронные письма с сайта. Как только вы захотите снова заблокировать сгенерированный Gmail, снова откройте фильтр с помощью кнопки “изменить” и перенастройте действия.

Вот и все. Теперь вы профессионал в использовании сгенерированных адресов Gmail. Вы можете создать огромное количество адресов и мастерски управлять потоком электронных писем, поступающих на вашу почту Gmail. Используя дополнительные адреса, вы сможете отслеживать сайты, которые передают ваши данные третьим лицам без вашего согласия. Вы сможете блокировать спам, не перенастраивая вашу антиспам-систему или не нажимая несколько раз на кнопки “Отписаться”. Вы можете автоматизировать удаление спама, используя Aspose.Email .NET, или вручную через настройки и интерфейс Gmail.