Aspose.Email  для .NET

Генерация Gmail-адреса с помощью .NET

Создайте собственный временный генератор Gmail с паролем, используя C#

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

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

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

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

Например, предположим, что вы сгенерировали дополнительный адрес username+for.spam.sender@gmail.com . Вы передали его сайту spam-sender.com. Через некоторое время вы можете получить письмо от другого сайта, например 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();

Теперь нам нужно получить адрес электронной почты и добавить к нему сгенерированную случайную строку. Для этого мы будем использовать класс <a href="https://reference.aspose.com/email/net/aspose.email/mailaddress/" rel="nofollow noopener" target="_blank">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‑аккаунта, откройте раздел «Безопасность» и добавьте пароль приложения. Не забудьте сохранить сгенерированный пароль в надёжном месте и постарайтесь не потерять его, так как он дает полный доступ к вашей почте!

Итак, давайте используем класс <a rel="nofollow noopener" target="_blank" href="https://reference.aspose.com/email/net/aspose.email.clients.imap/imapclient/">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());

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

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

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

if (list.Count > 0)
{
    //Mark as read
    await imapClient.AddMessageFlagsAsync(list, ImapMessageFlags.IsRead);
    //Move
    await imapClient.MoveMessagesAsync(list, "DestinationFolder");
    //Remove
    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");

        //Do something with the received messages. For example, mark them as read:
        imapClient.AddMessageFlags(generated, ImapMessageFlags.IsRead);

        //or delete them
        imapClient.DeleteMessages(generated, commitNow: true);
    },
    (_, errorEventArgs) => Console.WriteLine(errorEventArgs.Error.Message),
    "INBOX");

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

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

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

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

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

//Generate Gmail search pattern
var searchPattern = $"to:({generatedAddress.Address})";
Console.WriteLine(searchPattern);

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

Теперь давайте пошагово опишем, как создать фильтр. Для начала откройте веб‑интерфейс Gmail, доступный по <a href="https://mail.google.com/mail" rel="nofollow noopener" target="_blank">ссылке. В этом интерфейсе найдите строку поиска:

шаг1

В этой строке поиска вам необходимо вставить шаблон, сгенерированный ранее в этом руководстве. Затем нажмите кнопку “Show search options”, указанную на скриншоте ниже:

шаг2

В открывшемся окне параметров поиска вводить дополнительные данные не требуется, сгенерированный шаблон уже настроил поиск. Просто нажмите кнопку "Create filter".

шаг3

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

шаг4

Здесь вы можете выбрать, что делать с письмами, полученными на сгенерированный Gmail‑адрес. Можно автоматически архивировать их, помечать как прочитанные, удалять и т.д. Как правило, лучшим вариантом является удаление писем. Объём ящика ограничен, нет смысла тратить его на хранение мусора. После выбора подходящих действий нажмите кнопку «Create filter» ещё раз.

Готово! Фильтр полностью настроен, так что нежелательная почта больше не будет вас беспокоить.

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

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

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

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

шаг1

В открывшемся окне нажмите кнопку "See all settings":

шаг2

Откроется окно настроек аккаунта Gmail. В нём множество вкладок для тонкой настройки работы с почтой. Нас интересует вкладка "Filters and Blocked Addresses". Откройте эту вкладку:

шаг3

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

шаг4

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

На этом всё. Теперь вы — профи в работе с сгенерированными адресами Gmail. Вы можете создавать огромное количество адресов и мастерски управлять потоком писем, поступающих в ваш Gmail. Используя дополнительные адреса, вы сможете отслеживать сайты, которые передают ваши данные третьим сторонам без вашего согласия. Вы сможете блокировать спам без необходимости переобучать вашу антиспам‑систему или без многократного нажатия кнопок «Unsubscribe». Вы можете автоматизировать удаление спама, используя Aspose.Email .NET, или вручную через настройки и интерфейс Gmail.