0

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 経由でメールを送信することもできませんでした

4

1 に答える 1

1

Gmail について:

ここを見てください。基本的に、Google は、「すべてのアカウントを安全にしたいので、安全性の低いアプリケーションがユーザーの Gmail アカウントにアクセスすることを拒否します!」と自らに言いました。ありがたいことに、これをオフにすることができます。そうしないと、Fossamail を電子メール クライアントとして使用することはできませんでした。

私自身は使っていませんが、Hotmail/Outlook も同じ状況かもしれません。

于 2015-10-17T23:58:42.223 に答える