2012-06-17 18 views
7

Desidero inviare email con il mio account Gmail, ho fatto un tentativo, ma senza fortuna, quindi chiunque può darmi un campione? Tutti i suggerimenti sarebbero apprezzati. Grazielua invia posta con account gmail

ho usato lualogging api, il codice è

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

otterrebbe alcuni codici. :) – hjpotter92

+0

hai davvero bisogno di lavorare sulla tua domanda un po 'di più se vuoi ottenere qualche tipo di risposta utile. Specificare cose come la configurazione corrente (PC? Mobile? Corona SDK, forse?). Prendi anche il tempo di spiegare effettivamente (con dettagli e codice) cosa hai provato. – kikito

+0

Ho usato il lualogging api – ms2008

risposta

14

Si dovrebbe guardare LuaSocket, in particolare la sua SMTP module che può essere utilizzato per inviare la posta utilizzando il tuo account GMail. Hai anche bisogno di una libreria SSL, io uso LuaSec che è stato progettato per essere usato insieme a LuaSocket. Questo è il codice che ho usato con successo per inviare e-mail usando il mio account 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

grazie per il tuo esempio, avrò un tentativo – ms2008

+0

Lua non supporta i server di posta che richiedono l'autenticazione (agisce in modo strano e non supporta SSL)? – ms2008

+0

Nell'esempio esiste già l'autenticazione e la crittografia. Vedi i campi 'user' e' password' e la funzione 'sslCreate' usata per iniziare la connessione. Hai solo bisogno delle librerie LuaSocket e LuaSec. –

0

Il codice da Michal Kottman funziona correttamente, ma non riesce (per me) quando il server SMPT funziona su 587 porta, utilizzando un modo abbastanza diverso di accetta la posta da inviare (in base a ciò che ho letto). Qualcuno ha affrontato qualcosa di simile? Ottengo sempre "il numero di versione errato" sul server che lavora sulla porta 587.

Problemi correlati