Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local user = "MY USERNAME"
- local pass = "MY PASSWORD"
- local message_buffer = {}
- local message_get = false
- local messages = {}
- local reading = 0
- local msg_read = false
- local function readNextMessage(sock)
- reading = reading + 1
- Msg("ATTEMPT TO READ: " .. reading .. "\n")
- if(reading > #messages) then return end
- local m = messages[reading]
- if(m == nil) then return end
- msg_read = true
- sock:Send("RETR " .. m.id .. "\r\n")
- Msg("READING MESSAGE: " .. reading .. "\n")
- end
- local function readMessages(sock)
- Msg("Reading Messages...\n");
- for k,v in pairs(message_buffer) do
- local d = string.Explode(" ",v)
- local id = tonumber(d[1])
- local bytes = tonumber(d[2])
- table.insert(messages,{id=id,bytes=bytes})
- end
- readNextMessage(sock)
- end
- local function Parse(data,sock)
- if(string.find(data,"+OK")) then
- if(string.find(data,"POP3")) then
- sock:Send("USER "..user.."\r\n")
- sock:Send("PASS "..pass.."\r\n")
- elseif(string.find(data,"server")) then
- sock:Send("LIST\r\n")
- elseif(string.find(data,"message")) then
- if(msg_read == false) then
- message_get = true
- return
- else
- return
- end
- end
- end
- if(string.find(data,"[.]")) then
- if(msg_read) then
- msg_read = false
- readNextMessage(sock)
- return
- end
- message_get = false
- readMessages(sock)
- return
- end
- if(msg_read) then
- messages[reading].text = messages[reading].text or ""
- messages[reading].text = messages[reading].text .. "\n" .. data
- return
- end
- if(message_get) then
- table.insert(message_buffer,data);
- Msg("MESSAGE: " .. data .. "\n")
- return
- end
- end
- local function Callback(sock,call,id,err,data,peer)
- if (call == SCKCALL_CONNECT and err == SCKERR_OK) then
- sock:ReceiveLine()
- end
- if (call == SCKCALL_REC_LINE and err == SCKERR_OK and data:len() > 0) then
- sock:ReceiveLine()
- end
- Parse(data,sock)
- Msg("SOCKET CALLBACK: " .. data .. "\n");
- end
- local sock = OOSock(IPPROTO_TCP)
- sock:Connect("pop3.comcast.net",110)
- sock:SetCallback(Callback)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement