2012-06-17 181 views
7

我想用我的Gmail帳戶發送電子郵件,我試了一下,但沒有運氣,那麼任何人都可以給我一個樣本?任何建議,將不勝感激。謝謝lua用Gmail帳戶發送郵件

我用lualogging API,代碼

require"logging.email" 

logger = logging.email { 
    rcpt = "[email protected]", 
    from = "[email protected]", 
    user = "[email protected]", 
    password = *****, 
    server = "smtp.gmail.com", 
    port = 587, 
    headers = { 
    rcpt = "[email protected]", 
    from = "[email protected]", 
    subject = "[%level] logging.email test", 
    }, 
} 

logger:error("error!") 
+5

將luv一些代碼。 :) – hjpotter92

+0

如果你想得到任何有用的答案,你真的需要更多地處理你的問題。指定您當前的設置(PC?Mobile?Corona SDK,也許?)。也花時間來真正解釋(詳細信息和代碼)你試過的東西。 – kikito

+0

我用lualogging API – ms2008

回答

14

你應該看看LuaSocket,尤其是其SMTP module可用於使用Gmail帳戶發送郵件。您還需要一個SSL庫,我使用LuaSec,它被設計爲與LuaSocket一起使用。這是我成功地使用使用我的Gmail帳戶發送電子郵件的代碼:

-- Michal Kottman, 2011, public domain 
local socket = require 'socket' 
local smtp = require 'socket.smtp' 
local ssl = require 'ssl' 
local https = require 'ssl.https' 
local ltn12 = require 'ltn12' 

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 
+0

感謝您的例子,我會得到一個嘗試 – ms2008

+0

是否Lua不支持需要認證的郵件服務器(行爲怪異,不支持SSL)? – ms2008

+0

在這個例子中已經有認證和加密。請參閱用戶名和密碼字段以及用於啓動連接的sslCreate函數。你只需要LuaSocket和LuaSec庫。 –

0

從米哈爾Kottman代碼工作正常,但它沒有(對我來說)時,SMPT服務器工作在587端口,利用一個相當不同的方式接受郵件發送(根據我所讀的)。有人遇到類似的事嗎?我總是在端口587上的服務器上獲得「錯誤的版本號」。

相關問題