Pregunta sobre lua, email – lua enviar correo con cuenta de gmail

7

Quiero enviar un correo electrónico con mi cuenta de Gmail, lo intenté, pero no tengo suerte, ¿alguien puede darme una muestra? Cualquier sugerencia sera apreciada. Gracias

Utilicé 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!")
Utilicé la API de lualogging ms2008
Me encantarían algunos códigos. :) hjpotter92
realmente necesitas trabajar un poco más en tu pregunta si quieres obtener algún tipo de respuesta útil. Especifique cosas como su configuración actual (¿PC? ¿Mobile? ¿Corona SDK, quizás?). También tómese el tiempo para explicar (con detalles y código) lo que ha intentado. kikito

Tu respuesta

2   la respuesta
0

) cuando el servidor smpt funciona en el puerto 587, usando una forma bastante diferente de aceptar correo para enviar (según lo que leí). ¿Alguien ha enfrentado algo similar? Siempre obtengo un "número de versión incorrecto" en el servidor que trabaja en el puerto 587.

14

Deberias mirarLuaSocket, especialmente suMódulo SMTP que puede usarse para enviar correo usando su cuenta de Gmail. También necesitas una biblioteca SSL, yo usoLuaSec que fue diseñado para ser utilizado junto con LuaSocket. Este es el código que utilicé 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
No importa cómo, ¡Gracias por los comentarios, chicos! ms2008
Lo siento, pero no conozco la configuración de su servicio de correo alternativo, por lo que puede requerir otra versión SSL, comoprotocol = 'sslv3'. Si no necesita SSL, elimine elcreate = sslCreate línea. Michal Kottman
@Mitchal cuando trabajé en tu código recibo un error JERRY
Tuve una oportunidad, funciona! Muchas gracias. Y ahora quiero usar otro servicio de correo. Cuando intenté, recibí 1 mensajes de error que dicen: "El envío de correo falló en un número de versión incorrecto", ¿qué debo hacer? modificar la función sslCreate? ms2008

Preguntas relacionadas