7

Gmailアカウントでメールを送信したいのですが、試してみましたが、うまくいきませんでした。誰かサンプルをくれませんか? 任意の提案をいただければ幸いです。ありがとうございました

lualogging api を使用しました。コードは次のとおりです。

require"logging.email"

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

logger:error("error!")
4

2 に答える 2

14

LuaSocket 、特にGMail アカウントを使用してメールを送信するために使用できるSMTP モジュールを確認する必要があります。SSL ライブラリも必要です。LuaSocketと一緒に使用するように設計されたLuaSecを使用します。これは、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
于 2012-06-17T10:38:50.640 に答える
0

Michal Kottman のコードは適切に動作しますが、smpt サーバーが 587 ポートで動作し、送信するメールを受け入れるかなり異なる方法を使用すると (私にとっては) 失敗します (私が読んだ内容によると)。誰かが似たようなことに直面しましたか?ポート 587 で動作しているサーバーで常に「間違ったバージョン番号」を取得します。

于 2017-07-17T17:45:14.000 に答える