Aspose.Email  C++ 用

C++ を使用して Gmail アドレスを生成する

C++を使用してパスワードを使用して独自の一時的なGmailジェネレータを作成する

  ダウンロード无料トライアル
 

Gmailジェネレーターは、メール購読を管理するためのかなり一般的な方法です。本質的には、これは一時的なメールアドレスのプロバイダーに似ていますが、はるかに柔軟で信頼性が高く、安全です。

ジェネレータの本質は、追加のGmailアドレスを作成することです。これらの追加アドレスは、さまざまなウェブサイトに登録する際に使用できます。これらのウェブサイトは、ほとんどの場合、指定したアドレスにメールを送信します。住所は追加されるため、すべての手紙はメインの住所に送られます。ただし、同時に、アプリケーションで生成された、または手動で作成された追加の住所がレターの受取人として示されます。

受信者のアドレスでメールを検索すると、メールをフィルタリングして自動アクションを実行できます。1 回限りまたは恒久的。また、ユーザーの同意なしに第三者とアドレスを共有しているウェブサイトを見つけることもできます。

たとえば、username+ for.spam.sender@gmail.com という追加のアドレスを生成したとします。その後、そのアドレスを spam-sender.com のウェブサイトに渡しました。しばらくすると、other-sender.com などの他のウェブサイトからメールが届く場合がありますが、受信者はユーザー名+ for.spam.sender@gmail.com になります。それ以外の状況では、other-sender.com からプロモーションメールが送信された理由を理解することはできませんが、別のアドレスを使用しているため、spam-sender.com がお客様のアドレスを第三者と共有していることが簡単にわかります。もしそうなら、これらのサイトのメーリングリストから退会しても意味がありません。追加したアドレスは、迷惑メールを送信するための公開ベースに既に含まれている可能性があります。この追加アドレスに届くメールをすべてブロックした方がずっと簡単です。このようなメールを迷惑メールフォルダに自動的に移動するように設定しておくとさらに良いでしょう。この設定では、これらのサイトがスパムを送信していることをGmailが認識するため、これらのサイトの操作が非常に困難になります。

それでは、C++ 用の Aspose.Email を使ってこのようなジェネレータを実装する方法を考えてみましょう。

一時的な Gmail を生成して操作する

追加のGmailアドレスを生成するために、実際にはAspose.Emailは必要ありません。Gmailサービスとやり取りする必要はまったくありません。特定のルールに従い、手動またはランダムに作成した追加アドレスはどれでも使用できます。

では、これらのルールは何でしょうか?

ポイントは重要ではありません。つまり、住所の「@」記号の前にあるドットを削除したり、任意の文字ペアの間に新しいドットを追加したりできます。

「@」文字の前に「+」文字を追加し、その後に任意の文字と数字を付けることができます。 「username@gmail.com」というアドレスの例:

これらのアドレスはすべて、Webサイトへの登録時にすでに使用できます。しかし、これらのアドレスに届くメッセージはすべてメインのメールボックスに送られるため、単独ではほとんど意味がありません。したがって、これらのアドレスを扱う際には、こちらの説明を使用する価値があります。

シンプルな一時的な 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 C++ 用の Aspose.Email ライブラリからのクラス:

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 認証を実装したくない場合に OAuth 認証を実行する必要がなくなります。Google アカウントの設定に進み、セキュリティセクションを開いて、アプリパスワードを追加するだけです。生成されたパスワードを安全なストレージに保存し、紛失しないようにしてください。これにより、メールに完全にアクセスできるようになります。

それでは、使ってみましょう ImapClient IMAP プロトコルを使用してクラス分けし、Gmail アカウントに接続します。

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にマークする、削除する、移動する

レターのリストを受け取ったので、すでにさまざまな操作を実行できます。とりわけ一度に。メールボックスで 1 つずつ探す必要はありません。文字通り、いくつかのコマンドとすべての文字が既読になったり、別のフォルダに移動されたり、単に削除されたりします。ただし、文字のリストが空でないことを事前に確認することを忘れないでください。すでにすべて削除されている可能性があります。

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 のメールウェブインターフェースを開いてください。次の URL からアクセスできます。 ザ・リンク。このインターフェースでは、検索バーを探してください。

step1

この検索バーに、この命令の前半で生成されたテンプレートを挿入する必要があります。次に、下のスクリーンショットに示されている [検索オプションを表示] ボタンをクリックする必要があります。

step2

開いた検索オプションウィンドウでは、追加のデータを入力する必要はありません。生成されたテンプレートはすでに検索を設定しています。「フィルターを作成」ボタンをクリックするだけです。

step3

その結果、フィルター設定ウィンドウが開きます。

step4

ここでは、生成された Gmail アドレスで受信したメールをフィルターでどのように処理するかを選択できます。メールを自動的にアーカイブしたり、既読にしたり、削除したりすることができます。原則として、メールを削除するのが最善の方法です。メールボックスの容量は限られているので、ゴミ箱に使うのは意味がありません。自分に合ったアクションを選択したら、[フィルターの作成] ボタンをもう一度クリックします。

完了!フィルターは完全に設定されているので、迷惑メールが気になることはもうありません。

Gmail の一時フィルターを管理する

特定のウェブサイトから受信したメッセージが未承諾メッセージになることがあります。それらはメールボックス内のゴミになり、自分にとって本当に重要で興味深いものをその中に見つけることができなくなるだけです。その結果、この Web サイトからの不要なメッセージをブロックするフィルターを作成します。しかし、その Web サイトからのメッセージがスパムでなくなったらどうなるでしょうか。たとえば、パスワードを回復したいとします。Web サイトからパスワードリセットフォームへのリンクが記載された電子メールが送信されても、フィルターによって電子メールがすぐに削除されるため、受信できません。

幸いなことに、このような状況から抜け出すためのエレガントな方法があります。これらのメールが削除されないように、フィルターを一時的に再設定できます。または、フィルターを完全に削除することもできます。これがどのようにできるか見てみましょう。

まず、Gmailのウェブインターフェースを開きます。開いたページで [設定] ボタンをクリックします。

step1

開いたウィンドウで、[すべての設定を表示] ボタンをクリックします。

step2

Gmail アカウント設定ウィンドウが開きます。メール操作を微調整するためのタブが多数用意されています。「フィルターとブロックされたアドレス」タブに興味があります。このタブを開く:

step3

開いたタブには、以前に作成した生成済みGmailのフィルターのリストと、場合によっては他のフィルターが表示されます。

step4

フィルターの説明から、ブロックを解除したいアドレスの原因となっているフィルターを簡単に判断できます。「削除」ボタンをクリックすると、フィルターを完全に無効にすることができます。「編集」ボタンをクリックすると、フィルターを再設定できます。たとえば、メールを削除する代わりに、そのメールにフラグを付けることができます。これにより、フィルターを保存しておくと、後で簡単にフィルターを有効にできます。フィルターを編集すると、Web サイトから必要なメールを受信できるようになります。生成されたGmailをブロックし直したい場合は、すぐに「編集」ボタンでフィルターを再度開き、アクションを再設定します。

それがすべてです。これで、生成された Gmail アドレスを使ってプロになりました。膨大な数のアドレスを作成して、Gmailに届くメールの流れをうまく管理できます。アドレスを追加すると、ユーザーの同意なしにデータを第三者に転送したサイトを追跡できます。スパム対策システムを再トレーニングしたり、[登録解除] ボタンを何度も押したりしなくても、スパムをブロックできます。迷惑メールの削除は、Aspose.Email.NET を使用して自動化することも、設定や Gmail インターフェースから手動で行うこともできます。