Luasec - 使用SMTP通过Gmail发送电子邮件

时间:2015-10-17 19:43:06

标签: lua smtp luasec

我尝试使用luasec连接到我的Gmail帐户并通过SMTP发送电子邮件,虽然过了一段时间我能够允许不安全的应用程序连接,但我想知道如何实现安全连接通过gmail。

我使用了以下代码,我在此处找到了,在连接到gmail之前套接字连接被ssl包装,但google仍然说连接不安全。

local socket = require 'socket'
local smtp = require 'socket.smtp'
local ssl = require 'ssl'
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

我甚至创建了一个自签名证书并将其用作ssl包装中的变量,但仍然gmail将连接标识为不安全。我们需要更改协议还是需要更新luasec库?

就此而言,我也无法通过hotmail / outlook.com发送电子邮件

1 个答案:

答案 0 :(得分:1)

关于Gmail:

看看here。从本质上讲,谷歌自己说,&#34;嘿,我们希望每个帐户都安全,所以我们拒绝让安全性较低的应用程序访问我们的用户&#39; Gmail帐户!&#34;值得庆幸的是,你可以关闭它,或者我从来没有能够使用Fossamail作为我的电子邮件客户端。

Hotmail / Outlook的情况可能相同,但我自己也不会使用它们。