Come ottenere email da Gmail a un'app PHP

1

Sto costruendo un'app PHP che dovrebbe in qualche modo ricevere e-mail che devono essere importate nei record degli utenti. Nessuna delle soluzioni che ho trovato funzionerà (elencate e spiegate sotto). Spero che qualcuno là fuori abbia una possibile soluzione.

L'email della nostra organizzazione è ospitata da Google, quindi posso utilizzare l'API di Google per accedere all'account.

Il flusso di lavoro previsto è:

  1. Il client invia un indirizzo email centrale a cui le persone accedono tramite delega.
  2. Un agente esegue un'azione che indica che il thread di posta elettronica deve essere associato all'account del cliente nell'app.
  3. L'app viene in qualche modo informata che una particolare email deve essere importata e lo fa.

Ho provato diverse soluzioni:

  1. Inizialmente l'app aveva una semplice ri-creazione in sola lettura della posta in arrivo. Questa ricreazione ha consentito agli Agenti di associare una particolare e-mail a qualsiasi account nell'app con un clic di un pulsante e di compilare un modulo modale. Tuttavia, questo metodo si è dimostrato non ideale, poiché gli agenti dovevano in genere rispondere o archiviare l'email, per la quale dovevano tornare su GMail.

  2. Avevamo anche pensato di creare un nuovo record e server MX in modo che Agents potesse semplicemente inoltrare l'e-mail a [client's ID]@app.mydomain.com . Ciò è stato negato dalla gestione, anche se la manutenzione di un server di posta è molto impegnativa.

  3. Il passaggio successivo prevedeva che l'agente inoltrasse l'e-mail a [email protected] AND [client's ID]@app.mydomain.com . Anche se app.mydomain.com non esiste, l'app potrebbe controllare l'indirizzo [email protected] e analizzare a chi altro è stata inviata l'email. Tuttavia questo ha causato un sacco di messaggi "Email non inviati" da Google.

  4. Infine ho pensato che avremmo potuto inoltrare manualmente l'agente a [email protected] manualmente e includere nel corpo una chiave speciale che l'app avrebbe cercato. In genere questo tipo di cose viene inserito nell'oggetto e assomiglia a [REF:12588F3T6YYB] . La nostra chiave speciale sembrerebbe [appname:client-id,other-client-id,etc] . In questo momento sembra che questa sia la soluzione migliore. Ho provato a creare un componente aggiuntivo GMail che semplificherebbe questo processo, ma i componenti aggiuntivi non possono essere eseguiti quando si accede all'account tramite delega.

Esiste una magica quinta opzione che sarà facile da usare per i nostri agenti?

    
posta Pickle 12.10.2018 - 22:15
fonte

1 risposta

1

Il mio commento sembra più una risposta, in modo da ripubblicare e ritemprare.

Il tuo n. 2 è facile da implementare e non richiede un nuovo MX ...

Gmail usa / supporta il carattere "estensione indirizzo" + , quindi user+tag@gmail viene consegnato a user@gmail , ma mantiene la parte +tag come il campo To: originale.

Quindi ....

1) Crea un nuovo account email, ad esempio "appname_tickets @ yourco", imposta una password, consenti l'accesso imap, ecc.

2) Email dei clienti "support @ yourco". Questa è la tua tipica casella di posta condivisa. Agente (s) controllare questo, e quindi ...

3) Gli agenti inoltrano le e-mail in base a "appname_tickets + clientID @ yourco" o "appname + clientID_ticketNumber @" o qualsiasi altro sistema di tagging che si desidera utilizzare. Basta usare un singolo + per separare il lato sinistro (nome utente reale email localpart) e il lato destro (indirizzo esteso / tag)

4) Nel codice PHP, utilizza le varie funzioni IMAP per eseguire il polling della nuova posta, controllando le intestazioni per l'intero To: indirizzo, analizzandole e quindi proseguendo con qualsiasi elaborazione che devi eseguire sul messaggio.

    
risposta data 13.10.2018 - 18:33
fonte

Leggi altre domande sui tag