Pergunta sobre lua, email – lua enviar e-mail com conta do Gmail

7

Eu quero enviar e-mail com a minha conta do Gmail, eu tentei, mas sem sorte, então alguém pode me dar uma amostra? Qualquer sugestão seria apreciada. Obrigado

Eu usei lualogging api, o código é

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!")
Eu usei o lualogging api ms2008
iria luv alguns códigos. :) hjpotter92
você realmente precisa trabalhar um pouco mais na sua pergunta se quiser obter algum tipo de resposta útil. Especifique coisas como sua configuração atual (PC? Mobile? Corona SDK, talvez?). Aproveite também o tempo para realmente explicar (com detalhes e código) o que você tentou. kikito

Sua resposta

2   a resposta
0

O código do Michal Kottman funciona corretamente, mas ele falha (para mim) quando o servidor smpt funciona na porta 587, usando uma maneira bem diferente de aceitar emails para enviar (de acordo com o que eu li). Alguém enfrentou algo parecido? Eu sempre obtenho "número errado de versão" no servidor trabalhando na porta 587.

14

Você deveria olharLuaSocket, especialmente suaMódulo SMTP que pode ser usado para enviar e-mails usando sua conta do GMail. Você também precisa de uma biblioteca SSL, eu usoLuaSec que foi projetado para ser usado junto com o LuaSocket. Este é o código que usei com sucesso para enviar e-mails usando minha conta do 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
E se um servidor smtp não for necessário para estabelecer a conexão segura, mas precisa de autenticação. como é o código? obrigado. Desculpe, te peço muito, eu sou um novato, então :) ms2008
Eu tive uma tentativa, funciona! Muito obrigado. E agora eu quero usar outro serviço de correio, quando eu tentei que recebo 1 mensagens de erro que dizem: "O envio de email falhou número errado versão", o que devo fazer? modificar a função sslCreate? ms2008
@Mitchal quando eu trabalhei no seu código eu estou recebendo um erro JERRY
Não importa como, obrigado pelos comentários, pessoal! ms2008

Perguntas relacionadas