web-dev-qa-db-ja.com

GmailからPHPアプリにメールを取得する方法

私はPHPアプリを構築しています。これは、ユーザーレコードにインポートされる電子メールを何らかの方法で受信する必要があります。私が思いついたソリューションはどれも機能しません(以下にリストおよび説明されています)。誰かがそこに可能な解決策があることを望んでいます。

私たちの組織のメールはGoogleでホストされているため、Google APIを使用してメールアカウントにアクセスできます。

意図されたワークフローは次のとおりです。

  1. クライアントは、委任を通じて人々がアクセスする中央の電子メールアドレスに電子メールを送信します。
  2. エージェントは、メールスレッドをアプリ内のクライアントのアカウントに関連付ける必要があることを示すアクションを実行します。
  3. 特定のメールがインポートされることがアプリに通知され、インポートされます。

私はいくつかの解決策を試しました:

  1. 当初、このアプリには受信ボックスの単純な読み取り専用の再作成がありました。この再作成により、エージェントはボタンをクリックするだけで特定のメールをアプリ内のアカウントに関連付け、モーダルフォームに入力することができました。ただし、エージェントは通常、メールを返信または提出する必要があり、GMailに戻る必要があったため、この方法は理想的とは言えませんでした。

  2. エージェントがメールを[client's ID]@app.mydomain.comに転送するだけで済むように、新しいMXレコードとサーバーを作成することも考えていました。電子メールサーバーを維持することは多くの作業であるため、これは経営者によって拒否されました。

  3. 次に、エージェントにメールを[email protected] AND [client's ID]@app.mydomain.comに転送してもらいました。 app.mydomain.comが存在しない場合でも、アプリは[email protected]アドレスを確認し、メールの送信先を解析できます。ただし、これにより、Googleから大量の「メールが送信されませんでした」というメッセージが送信されました。

  4. 最後に、エージェントにメールを手動で[email protected]に転送し、アプリが検索する特別なキーを本文に含めることができると考えました。通常、この種のものは件名に挿入され、[REF:12588F3T6YYB]のようになります。特別なキーは[appname:client-id,other-client-id,etc]のようになります。現時点では、これが最良のソリューションのようです。このプロセスを簡略化するGMailアドオンを作成しようとしましたが、委任を通じてアカウントにアクセスすると、アドオンを実行できません。

エージェントが使いやすい魔法の5番目のオプションはありますか?

1
Quasipickle

私のコメントは答えのように感じられるので、再投稿して具体化します。

#2は実装が簡単で、新しいMXを必要としません...

Gmailは「アドレス拡張」文字+を使用/サポートしているため、user+tag@gmailuser@gmailに配信されますが、+tag部分は元のTo:フィールドとして維持されます。

そう....

1)新しいメールアカウントを作成します-「appname_tickets @ yourco」と言い、パスワードを設定し、imapアクセスを許可します。

2)クライアントは「support @ yourco」にメールを送信します。これは、一般的な共有着信ボックスです。エージェントがこれを確認してから...

3)エージェントは、「appname_tickets + clientID @ yourco」、「appname + clientID_ticketNumber @」、または使用したいタグシステムに適切にメールを転送します。単一の+を使用して、左側(実際のメールユーザー名のローカル部分)と右側(拡張アドレス/タグ)を分離します

4)PHP=コードで、さまざまなIMAP関数を使用して新しいメールをポーリングし、ヘッダーの完全なTo:アドレスを確認し、それを解析してから、処理を続行します。メッセージで行う必要があります。

1
ivanivan