Aspose.Email  для C++

Створіть адресу Gmail за допомогою C ++

Створіть власний тимчасовий генератор Gmail з паролем за допомогою C ++

  Завантажити безкоштовну пробну версію
 

Генератор Gmail - це досить поширений спосіб управління підписками на електронну пошту. По суті, це аналог провайдера тимчасових адрес електронної пошти, але набагато більш гнучкий, надійний і безпечний.

Суть генератора полягає в створенні додаткових адрес Gmail. Використовувати ці додаткові адреси можна при реєстрації на різних сайтах. Ці веб-сайти, швидше за все, надсилатимуть електронні листи на вказані вами адреси. Так як адреси додаткові, всі листи будуть надходити на вашу основну адресу. Але при цьому в якості одержувача листа буде вказана додаткова адреса, згенерована додатком або підготовлена вручну.

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

Наприклад, припустимо, ви створили додаткову адресу username+ for.spam.sender@gmail.com . Потім ви передали його на веб-сайт spam-sender.com. Через деякий час ви можете отримати електронний лист з іншого веб-сайту, наприклад other-sender.com, але одержувачем буде ім’я користувача+ for.spam.sender@gmail.com . У будь-якій іншій ситуації ви не зможете зрозуміти, чому other-sender.com надсилає вам рекламні листи, але оскільки ви використовували альтернативну адресу, легко побачити, що spam-sender.com поділився вашою адресою третім сторонам. І якщо так, то немає сенсу відписуватися від розсилок цих сайтів. Ваша додаткова адреса, ймовірно, вже була включена в якусь публічну базу для надсилання небажаних електронних листів. Набагато простіше буде, якщо ви просто заблокуєте всю пошту, що надходить на цю додаткову адресу. Ще краще буде, якщо ви налаштуєте автоматичне переміщення таких листів в папку зі спамом. Ця настройка дуже ускладнить життя цих сайтів, оскільки Gmail буде знати, що ці сайти надсилають спам.

Отже, давайте розберемося, як реалізувати такий генератор за допомогою Aspose.Email для C++.

Створіть тимчасовий Gmail і працюйте з ним

Щоб створити додаткову адресу Gmail, нам насправді не потрібен Aspose.Email, нам не потрібно жодним чином взаємодіяти зі службою Gmail. Будь-яка додаткова адреса, яку ви складаєте вручну або випадковим чином, при дотриманні певних правил, буде працювати.

Так що ж це за правила?

Пункти не важливі. Тобто у вашій адресі перед символом «@» ви можете як видалити точки, так і додати нові між будь-якими парами букв.

Перед символом «@» ви можете додати символ «+» з будь-яким набором букв і цифр після нього. Приклади для адреси «username@gmail.com»:

Всі ці адреси вже можна використовувати при реєстрації на сайтах. Але самі по собі вони не мають сенсу, тому що всі повідомлення, що надходять на ці адреси, потраплять у вашу основну поштову скриньку. Тому варто скористатися нашою інструкцією по роботі з цими адресами.

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

Отже, давайте створимо простий генератор випадкових підадрес. Для цього ми додамо випадковий рядок між символами «+» та «@». Насамперед нам потрібно згенерувати випадковий рядок певної довжини, що складається з певного набору символів:

const char16_t pattern[] = u"abcdefghijklmnopqrstuvwxyz0123456789";
auto patternLength = std::char_traits<char16_t>::length(pattern);
const int suffixLength = 10;
std::string generatedSuffix;
generatedSuffix.reserve(suffixLength);
srand(time(NULL));
for (int i = 0; i < suffixLength; i++)
{
    generatedSuffix += pattern[rand() % (patternLength - 1)];
}

Тепер нам потрібно отримати адресу електронної пошти і додати до неї згенерований випадковий рядок. Для цього ми будемо використовувати MailAdress клас з бібліотеки Aspose.Email для C++:

auto originalAddress = System::MakeObject<MailAddress>(System::String(u"some.address@gmail.com"));
auto generatedAddress = System::MakeObject<MailAddress>(
    originalAddress->get_User() + u"+" + generatedSuffix + u"@" + originalAddress->get_Host());
Console::WriteLine(generatedAddress);

Готово! Отриману адресу вже можна використовувати при реєстрації на сайтах. Незабаром веб-сайти почнуть надсилати повідомлення на цю адресу. Давайте подивимося, що ми можемо зробити з цими повідомленнями.

Використовуйте клієнт IMAP для роботи з повідомленнями, отриманими в створений Gmail

По-перше, щоб оперувати повідомленнями, отриманими за додатковою адресою, нам потрібно підключитися до Gmail. Для цього добре підходить IMAP. Щоб підключитися за допомогою цього протоколу, не забудьте встановити свій обліковий запис, щоб дозволити підключення до нього за допомогою цього протоколу. Також спростити підключення IMAP можна за допомогою виділеного пароля програми. Це дозволить вам уникнути необхідності виконувати авторизацію OAuth, якщо ви не хочете реалізувати її у своїй програмі. Просто перейдіть до налаштувань облікового запису Google, відкрийте розділ Безпека та додайте пароль програми. Не забудьте зберегти згенерований пароль у захищеному сховищі та намагайтеся не втратити його, оскільки він дає вам повний доступ до вашої пошти!

Отже, давайте скористаємося ImapClient клас і підключення до облікового запису Gmail за допомогою протоколу IMAP:

auto imapClient = System::MakeObject<Clients::Imap::ImapClient>(
    u"imap.gmail.com", 993, originalAddress->get_User(), u"password",
    SecurityOptions::SSLAuto);

Готово, тепер ми можемо, наприклад, отримати всі повідомлення, отримані за згенерованою адресою Gmail:

imapClient->SelectFolder(u"INBOX");
auto queryBuilder = System::MakeObject<ImapQueryBuilder>();
queryBuilder->get_To()->Contains(generatedAddress->get_Address());

auto list = imapClient->ListMessages(queryBuilder->GetQuery());

І ви отримаєте абсолютно всі подібні листи. Не має значення, з якого сайту вони прийшли до вас. Вони могли прийти з сайту, на який ви дали сформовану адресу електронної пошти. Це могло прийти з іншого сайту. З будь-якої адреси. Ми перевіряємо електронні листи не за відправником, а за одержувачем. І це дуже зручно.

Позначте, видаліть, перемістіть отримані повідомлення в тимчасовий Gmail

Отримавши список листів, ми вже можемо виконувати по ньому різні операції. Перш за все відразу. Вам не потрібно знаходити їх у своїй поштовій скриньці по черзі. Буквально пару команд і всі букви відзначаються як прочитані, переміщені в іншу папку або просто видаляються. Тільки не забудьте заздалегідь перевірити, чи список букв не порожній. Можливо, ви вже видалили все.

if (list->get_Count() > 0)
{
    //Mark as read
    imapClient->AddMessageFlags(list, ImapMessageFlags::get_IsRead());
    //Move
    imapClient->MoveMessages(list, u"DestinationFolder");
    //Remove
    imapClient->DeleteMessages(list, true);
}

Готово, ваша поштова скринька очищена від спаму.

Підпишіться на тимчасову адресу Gmail

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

std::function<void(System::SharedPtr<System::Object> sender, System::SharedPtr<Clients::Imap::ImapMonitoringEventArgs> eventArgs)> subscribeCallback =
[&generatedAddress, &imapClient](System::SharedPtr<System::Object> sender, System::SharedPtr<ImapMonitoringEventArgs> eventArgs)
{
    auto newMessages = eventArgs->get_NewMessages();
    auto generated = System::MakeObject<ImapMessageInfoCollection>();
    for each (auto newMessage in newMessages)
    {
        for each (auto address in newMessage->get_To())
        {
            if (address->get_Address() == generatedAddress->get_Address())
            {
                generated->Add(newMessage);
                break;
            }
        }
    }
    if (generated->get_Count() == 0) return;

    imapClient->SelectFolder(u"INBOX");

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

    //or delete them
    imapClient->DeleteMessages(generated, true);
};

std::function<void(System::SharedPtr<System::Object> sender, System::SharedPtr<Clients::Imap::ImapMonitoringErrorEventArgs> eventArgs)> errorCallback =
[](System::SharedPtr<System::Object> _, System::SharedPtr<ImapMonitoringErrorEventArgs> errorEventArgs)
{
    Console::WriteLine(errorEventArgs->get_Error()->get_Message());
};

imapClient->StartMonitoring(subscribeCallback, errorCallback, u"INBOX");

Цей алгоритм трохи спрощений тому, що в разі помилки підписка на нові повідомлення буде перервана. Можна значно поліпшити алгоритм. Для цього потрібно доопрацювати алгоритм, поліпшивши обробку помилок. Наприклад, можна налаштувати відновлення моніторингу в разі помилки, для цього можна скористатися функцією IMAPClient.ResumeMonitoring. Ця функція відновить з’єднання з сервером IMAP і відновить моніторинг нових повідомлень.

На жаль, для того, щоб використовувати цей алгоритм, вам все одно доведеться тримати програму постійно запущеною. Як тільки ви перериваєте виконання програми, нові листи більше не будуть автоматично видалятися. Але в цьому випадку є інше рішення.

Припиніть отримання повідомлень на згенеровану адресу Gmail

Gmail надає алгоритми фільтрації вхідних повідомлень. Ці алгоритми працюють на стороні сервісу і ніколи не пропустять небажану пошту, якщо, звичайно, правильно їх налаштувати. На даний момент, на жаль, ми не можемо надати вам функціонал віддаленого налаштування таких фільтрів за допомогою C++, але плануємо додати таку можливість найближчим часом. Слідкуйте за нашими оновленнями!

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

//Generate Gmail search pattern
auto searchPattern = System::String(u"to:(") + generatedAddress->get_Address() + u")";
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.