2015-10-17 153 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

相關問題