Frage an lua, email – lua Mail mit Google Mail-Konto senden

7

Ich möchte eine E-Mail mit meinem Google Mail-Konto senden. Ich habe es versucht, aber leider kein Glück. Kann mir jemand eine Probe geben? Anregungen wäre dankbar. Vielen Dank

Ich habe lualogging api verwendet, der Code ist

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!")
Ich habe die lualogging-API verwendet ms2008
würde einige Codes luv. :) hjpotter92
Sie müssen wirklich ein bisschen mehr an Ihrer Frage arbeiten, wenn Sie eine nützliche Antwort erhalten möchten. Geben Sie beispielsweise Ihr aktuelles Setup an (PC? Mobil? Corona SDK, möglicherweise?). Nehmen Sie sich auch die Zeit, um (mit Details und Code) zu erklären, was Sie versucht haben. kikito

Deine Antwort

2   die antwort
14

Sie sollten sich ansehenLuaSocket, vor allem seineSMTP-Modul Hiermit können Sie E-Mails mit Ihrem GMail-Konto senden. Sie benötigen auch eine SSL-Bibliothek, die ich verwendeLuaSec welches entworfen wurde, um zusammen mit LuaSocket verwendet zu werden. Dies ist der Code, den ich erfolgreich verwendet habe, um E-Mails mit meinem GMail-Konto zu senden:

-- 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
@Mitchal, als ich an Ihrem Code arbeitete, erhalte ich eine Störung JERRY
Egal wie, Danke für die Kommentare, Leute! ms2008
Und wenn ein SMTP-Server nicht die sichere Verbindung herstellen muss, sondern die Authentifizierung. Wie sieht der Code aus? Vielen Dank. Sorry, frag dich so sehr, ich bin ein Neuling, also :) ms2008
danke für dein beispiel, ich werde es versuchen ms2008
0

Der Code von Michal Kottman funktioniert einwandfrei, aber er schlägt (für mich) fehl, wenn der smpt-Server auf dem 587-Port arbeitet und eine ganz andere Art verwendet, um zu sendende E-Mails anzunehmen (je nachdem, was ich gelesen habe). Hat jemand etwas ähnliches konfrontiert? Ich erhalte immer die "falsche Versionsnummer" auf dem Server, der an Port 587 arbeitet.

Verwandte Fragen