2012-06-17 9 views
7

Quiero enviar un correo electrónico con mi cuenta de gmail, lo probé, pero no tuve suerte, entonces ¿alguien me puede dar una muestra? Cualquier sugerencia sera apreciada. Graciaslua enviar correo con la cuenta de gmail

he usado lualogging api, el código es

require"logging.email" 

logger = logging.email { 
    rcpt = "[email protected]", 
    from = "[email protected]", 
    user = "[email protected]", 
    password = *****, 
    server = "smtp.gmail.com", 
    port = 587, 
    headers = { 
    rcpt = "[email protected]", 
    from = "[email protected]", 
    subject = "[%level] logging.email test", 
    }, 
} 

logger:error("error!") 
+5

luv algunos códigos. :) – hjpotter92

+0

realmente necesita trabajar en su pregunta un poco más si desea obtener algún tipo de respuesta útil. Especifique cosas como su configuración actual (PC? Mobile? Corona SDK, ¿tal vez?). También tómese el tiempo para explicar realmente (con detalles y código) lo que ha intentado. – kikito

+0

Utilicé la api lualogging – ms2008

Respuesta

14

usted debe buscar en LuaSocket, especialmente su SMTP module que se puede utilizar para enviar correo utilizando su cuenta de Gmail. También necesita una biblioteca SSL, yo uso LuaSec que fue diseñado para usarse junto con LuaSocket. Este es el código que utiliza con éxito para enviar correos electrónicos usando mi cuenta de Gmail:

-- Michal Kottman, 2011, public domain 
local socket = require 'socket' 
local smtp = require 'socket.smtp' 
local ssl = require 'ssl' 
local https = require 'ssl.https' 
local ltn12 = require 'ltn12' 

function sslCreate() 
    local sock = socket.tcp() 
    return setmetatable({ 
     connect = function(_, host, port) 
      local r, e = sock:connect(host, port) 
      if not r then return r, e end 
      sock = ssl.wrap(sock, {mode='client', protocol='tlsv1'}) 
      return sock:dohandshake() 
     end 
    }, { 
     __index = function(t,n) 
      return function(_, ...) 
       return sock[n](sock, ...) 
      end 
     end 
    }) 
end 

function sendMessage(subject, body) 
    local msg = { 
     headers = { 
      to = 'Your Target <target email>', 
      subject = subject 
     }, 
     body = body 
    } 

    local ok, err = smtp.send { 
     from = '<your email>', 
     rcpt = '<target email>', 
     source = smtp.message(msg), 
     user = 'username', 
     password = 'password', 
     server = 'smtp.gmail.com', 
     port = 465, 
     create = sslCreate 
    } 
    if not ok then 
     print("Mail send failed", err) -- better error handling required 
    end 
end 
+0

gracias por su ejemplo, voy a probar – ms2008

+0

¿Lua no es compatible con los servidores de correo que requieren autenticación (actúa raro y no es compatible con SSL)? – ms2008

+0

En el ejemplo ya hay autenticación y encriptación. Consulte los campos 'usuario' y' contraseña' y la función 'sslCreate' utilizada para iniciar la conexión. Solo necesita las bibliotecas LuaSocket y LuaSec. –

0

El código de Michal Kottman funciona correctamente, pero se produce un error (para mí) cuando el servidor SMTP trabaja en 587 puertos, utilizando una forma bastante diferente a aceptar correo para enviar (de acuerdo a lo que leo) ¿Alguien enfrenta algo similar? Siempre obtengo "número de versión incorrecto" en el servidor que trabaja en el puerto 587.

Cuestiones relacionadas