2015-10-17 203 views
0

我已经尝试使用luasec连接到我的Gmail帐户并通过SMTP发送电子邮件,虽然过了一段时间,我可以允许不安全的应用程序连接,我想知道如何通过gmail实现安全连接。Luasec - 使用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

关于Gmail的使用者无法发送电子邮件:

看看here。基本上,谷歌自己说:“嘿,我们希望让每个帐户都安全,所以我们拒绝让不太安全的应用程序访问我们用户的Gmail帐户!”谢天谢地,你可以把它关掉,否则我将永远无法使用Fossamail作为我的电子邮件客户端。

这可能与Hotmail/Outlook的情况一样,尽管我自己并没有使用它们。

+0

感谢您的评论。我确实看到了这个链接,但是例如上面的代码不太安全的概念是我的问题的前提,即安全应用使用哪种协议? (上面有TLS和SSL,仍然被认为是不安全的!)是的,转向不太安全的应用程序访问是一种选择(虽然不是一个理想的选择)。在附注中(但与问题仍然相关),我来到https://support.google.com/a/answer/176600?hl=zh_CN。问题是,什么协议被认为是ap的安全使用? – Nepaluz

+0

在这种情况下,Google希望用户使用OAuth 2.0。不使用OAuth 2.0的用户将被视为“不太安全”。 – Josh

相关问题