Вопрос по email, lua – Луа отправить письмо с учетной записью Gmail

7

Я хочу отправить письмо с моей учетной записью Gmail, я попробовал, но не повезло, так кто-нибудь может дать мне образец? Мы ценим любые предложения. Спасибо

Я использовал API-интерфейс lualogging, код

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!")
Я использовал API Lualogging ms2008
будет любить некоторые коды. :) hjpotter92
вам действительно нужно больше работать над своим вопросом, если вы хотите получить какой-либо полезный ответ. Укажите такие вещи, как текущая настройка (ПК? Мобильный? Corona SDK, может быть?). Также найдите время, чтобы фактически объяснить (с деталями и кодом), что вы пытались. kikito

Ваш Ответ

2   ответа
0

Код от Michal Kottman работает должным образом, но он не работает (для меня), когда сервер smpt работает на порту 587, используя совершенно другой способ приема почты для отправки (согласно тому, что я прочитал). Кто-нибудь сталкивался с чем-нибудь подобным? Я всегда получаю "неправильный номер версии" на сервере работает через порт 587.

14

Вы должны посмотреть наLuaSocketособенно егоSMTP модуль который может быть использован для отправки почты с использованием вашей учетной записи GMail. Вам также нужна библиотека SSL, я используюLuaSec который был разработан для использования вместе с LuaSocket. Это код, который я успешно использовал для отправки писем с использованием моей учетной записи 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
И если серверу smtp не нужно устанавливать безопасное соединение, но требуется аутентификация. какой код нравится? Благодарю. Извините, так много спрашиваю, я новичок, так что :) ms2008
Lua не поддерживает почтовые серверы, требующие аутентификации (действует странно и не поддерживает SSL)? ms2008
В примере уже есть аутентификация и шифрование. Увидетьuser а такжеpassword поля и томуsslCreate функция, используемая для инициации соединения. Вам просто нужны библиотеки LuaSocket и LuaSec.
спасибо за пример, я попробую ms2008
Я попробовал, это работает! Спасибо большое. И теперь я хочу использовать другую почтовую службу. Когда я попытался получить 1 сообщение об ошибке: «Отправка почты не выполнена, номер версии неверный», что мне делать? изменить функцию sslCreate? ms2008

Похожие вопросы