2010-04-16 23 views
5

Estoy tratando de enviar un correo desde mi aplicación web2py alojada en GoogleAppEngine. Pero no está funcionando. Utilicé la función de correo que se proporcionó con web2py. ¿Alguien sabe cómo hacer esto? Leí en la documentación de GAE que la biblioteca de correo de Python no funcionaría con GAE y que se debe usar la biblioteca de correo GAE. ¿También se aplica al correo web2py? Gracias Enviando un correo electrónico desde un web2py en GAE

+1

Cuando dice que "no funciona" ¿qué quiere decir exactamente? ¿Te está dando algún mensaje de error? Esta página no parece segura de que el correo electrónico funcione con web2py + App Engine: http://wiki.web2py.com/Sending_Email_with_Plain_Text_HTML_Versions_plus_Attachments –

+0

El correo electrónico no se está enviando, y aparece el siguiente error Recibo el siguiente error. Error de Mail.send: el objeto 'module' no tiene atributo 'getaddrinfo' – felix

Respuesta

5

La clase web2py gluon.tools.Mail (que es utilizado por el módulo de autenticación también) funciona en GAE y no GAE fuera de la caja . Solo necesita pasar las configuraciones correctas:

mail=Mail() 
mail.settings.server="smtp.example.com:25" or "gae" 
mail.settings.sender="[email protected]" 
mail.settings.tls=True or False 
mail.settings.login="you:password" 

Admite codificaciones múltiples, MIME y archivos adjuntos.

+0

Recibo el siguiente error. fracaso Mail.send: 'módulo' objeto no tiene atributo 'getaddrinfo' y el código de la parte electrónico está mail = Correo() mail.settings.server = 'smtp.gmail.com:587' electrónico .settings.login = 'nombre de usuario: passwordxperia x1' mail.settings.sender = '' [email protected] mail.settings.tls = Verdadero o Falso mail.send (a, asunto, mensaje) Por encima de código funciona cuando uso desde mi máquina local, pero no una vez que lo cargo en GAE – felix

+1

Me perdí algo en mi comentario anterior y lo corrigí. Es cierto que debe tener la API de GAE y es cierto que web2py proporciona una capa de abstracción.Pero no puede conectarse a un servidor externo porque smtplib requiere un socket y el socket no está disponible en GAE. En resumen, debe establecer mail.settings.server = "gae" – mdipierro

3

La clase web2py gluon.tools.Mail funciona en GAE. Ver fragmento de código gluon.tools línea 310

try: 
     if self.settings.server == 'gae': 
      from google.appengine.api import mail 
      result = mail.send_mail(sender=self.settings.sender, to=to, 
            subject=subject, body=text) 

Ésta es la configuración correcta para trabajar en GAE

mail=Mail() 
mail.settings.server="gae" 
mail.settings.sender="[email protected]" #This must be the email address of a registered 
             #administrator for the application, or the address 
             #of the current signed-in user. 
mail.settings.login="you:password" 

Ver http://code.google.com/intl/en/appengine/docs/python/mail/emailmessagefields.html emisor La dirección de correo electrónico del remitente, la dirección del remitente. Debe ser la dirección de correo electrónico de un administrador registrado para la aplicación o la dirección del usuario que inició sesión actualmente. Los administradores se pueden agregar a una aplicación usando la Consola de administración. La dirección de correo electrónico del usuario actual se puede determinar con la API de los usuarios.

¡Lo siento! Mi inglés es muy malo. Espero ayudar

Celso Godinho ([email protected]) Mundial de Brasil campeón del fútbol 2010

Cuestiones relacionadas