Estoy desarrollando una aplicación web que enviará correos electrónicos en nombre de un usuario que ha iniciado sesión.¿Cómo implementar Gmail OAuth API para enviar correos electrónicos (especialmente a través de SMTP)?
Estoy tratando de usar el nuevo protocolo de Gmail OAuth anunciado here para enviar estos correos electrónicos a través de la cuenta de Gmail del usuario (preferiblemente usando SMTP en lugar de IMAP, pero soy fácil). Sin embargo, el código PHP de muestra me da un par de problemas.
- Todo el código de muestra se basa en IMAP, no en SMTP. ¿Por qué "apoyar" el protocolo SMTP si no le vas a mostrar a las personas cómo usarlo?
- El código de ejemplo me da un error fatal de una excepción Zend no capturada, no puede encontrar la carpeta "INBOX".
Fatal error: Uncaught exception 'Zend_Mail_Storage_Exception' with message 'cannot change folder, maybe it does not exist' in path\to\xoauth-php-samples\Zend\Mail\Storage\Imap.php:467 Stack trace: #0 path\to\xoauth-php-samples\Zend\Mail\Storage\Imap.php(248): Zend_Mail_Storage_Imap->selectFolder('INBOX') #1 path\to\xoauth-php-samples\three-legged.php(184): Zend_Mail_Storage_Imap->__construct(Object(Zend_Mail_Protocol_Imap)) #2 {main} Next exception 'Zend_Mail_Storage_Exception' with message 'cannot select INBOX, is this a valid transport?' in path\to\xoauth-php-samples\Zend\Mail\Storage\Imap.php:254 Stack trace: #0 path\to\xoauth-php-samples\three-legged.php(184): Zend_Mail_Storage_Imap->__construct(Object(Zend_Mail_Protocol_Imap)) #1 {main} in path\to\xoauth-php-samples\Zend\Mail\Storage\Imap.php on line 254
He verificado que estoy recibiendo buena OAuth tokens atrás, yo no sé cómo hacer la transacción de correo electrónico real ocurra. Este protocolo todavía es bastante nuevo, por lo que no hay mucha documentación comunitaria no oficial al respecto, y los documentos oficiales son algo inútilmente seco sobre el SMTP RFC. Entonces, si alguien puede ayudar a poner esto en marcha, lo agradecería enormemente.
Nota: Ya he podido conectarme al servidor SMTP de Gmail a través de SSL y enviar correctamente un correo electrónico, siempre que el usuario haya proporcionado a mi aplicación su nombre de usuario y contraseña de Gmail. Me gustaría evitar este método, ya que fomenta el phishing y los usuarios preocupados por la seguridad no lo aceptarán. Esta pregunta no es sobre eso.
Como soy nuevo, el filtro de spam de Stack Overflow me hizo eliminar los enlaces al anuncio de Gmail OAuth (http://googlecode.blogspot.com/2010/03/oauth-access-to-imapsmtp-in-gmail .html) y código de ejemplo (http://code.google.com/p/google-mail-xoauth-tools/wiki/PhpSampleCode). –
puede hacer una aplicación web que envíe correos electrónicos usando gmail a través de javascript solo. Como decirles a los servidores de gmail que se lo envíen al usuario. –