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