diff options
| author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2004-11-27 07:58:04 +0000 |
|---|---|---|
| committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2004-11-27 07:58:04 +0000 |
| commit | 7c97e8e40aaa665226fb54449773dc3134e755b2 (patch) | |
| tree | 47888d4c924fc24bf3b355bf58120ea3cdc74bc4 /src/smtp.lua | |
| parent | eb0fc857ddea6f084d338589e2a33d3e7d4eade6 (diff) | |
| download | luasocket-7c97e8e40aaa665226fb54449773dc3134e755b2.tar.gz luasocket-7c97e8e40aaa665226fb54449773dc3134e755b2.tar.bz2 luasocket-7c97e8e40aaa665226fb54449773dc3134e755b2.zip | |
Almost ready for beta3
Diffstat (limited to 'src/smtp.lua')
| -rw-r--r-- | src/smtp.lua | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/smtp.lua b/src/smtp.lua index 974d222..9d49178 100644 --- a/src/smtp.lua +++ b/src/smtp.lua | |||
| @@ -8,13 +8,16 @@ | |||
| 8 | ----------------------------------------------------------------------------- | 8 | ----------------------------------------------------------------------------- |
| 9 | -- Declare module and import dependencies | 9 | -- Declare module and import dependencies |
| 10 | ----------------------------------------------------------------------------- | 10 | ----------------------------------------------------------------------------- |
| 11 | local base = require("base") | ||
| 12 | local coroutine = require("coroutine") | ||
| 13 | local string = require("string") | ||
| 14 | local math = require("math") | ||
| 15 | local os = require("os") | ||
| 11 | local socket = require("socket") | 16 | local socket = require("socket") |
| 12 | local tp = require("socket.tp") | 17 | local tp = require("socket.tp") |
| 13 | |||
| 14 | local ltn12 = require("ltn12") | 18 | local ltn12 = require("ltn12") |
| 15 | local mime = require("mime") | 19 | local mime = require("mime") |
| 16 | 20 | local smtp = module("socket.smtp") | |
| 17 | module("socket.smtp") | ||
| 18 | 21 | ||
| 19 | ----------------------------------------------------------------------------- | 22 | ----------------------------------------------------------------------------- |
| 20 | -- Program constants | 23 | -- Program constants |
| @@ -98,8 +101,8 @@ end | |||
| 98 | -- send message or throw an exception | 101 | -- send message or throw an exception |
| 99 | function metat.__index:send(mailt) | 102 | function metat.__index:send(mailt) |
| 100 | self:mail(mailt.from) | 103 | self:mail(mailt.from) |
| 101 | if type(mailt.rcpt) == "table" then | 104 | if base.type(mailt.rcpt) == "table" then |
| 102 | for i,v in ipairs(mailt.rcpt) do | 105 | for i,v in base.ipairs(mailt.rcpt) do |
| 103 | self:rcpt(v) | 106 | self:rcpt(v) |
| 104 | end | 107 | end |
| 105 | else | 108 | else |
| @@ -110,7 +113,7 @@ end | |||
| 110 | 113 | ||
| 111 | function open(server, port) | 114 | function open(server, port) |
| 112 | local tp = socket.try(tp.connect(server or SERVER, port or PORT, TIMEOUT)) | 115 | local tp = socket.try(tp.connect(server or SERVER, port or PORT, TIMEOUT)) |
| 113 | local s = setmetatable({tp = tp}, metat) | 116 | local s = base.setmetatable({tp = tp}, metat) |
| 114 | -- make sure tp is closed if we get an exception | 117 | -- make sure tp is closed if we get an exception |
| 115 | s.try = socket.newtry(function() | 118 | s.try = socket.newtry(function() |
| 116 | if s.tp:command("QUIT") then s.tp:check("2..") end | 119 | if s.tp:command("QUIT") then s.tp:check("2..") end |
| @@ -145,7 +148,7 @@ local function send_multipart(mesgt) | |||
| 145 | coroutine.yield("\r\n") | 148 | coroutine.yield("\r\n") |
| 146 | end | 149 | end |
| 147 | -- send each part separated by a boundary | 150 | -- send each part separated by a boundary |
| 148 | for i, m in ipairs(mesgt.body) do | 151 | for i, m in base.ipairs(mesgt.body) do |
| 149 | coroutine.yield("\r\n--" .. bd .. "\r\n") | 152 | coroutine.yield("\r\n--" .. bd .. "\r\n") |
| 150 | send_message(m) | 153 | send_message(m) |
| 151 | end | 154 | end |
| @@ -191,7 +194,7 @@ end | |||
| 191 | -- yield the headers one by one | 194 | -- yield the headers one by one |
| 192 | local function send_headers(mesgt) | 195 | local function send_headers(mesgt) |
| 193 | if mesgt.headers then | 196 | if mesgt.headers then |
| 194 | for i,v in pairs(mesgt.headers) do | 197 | for i,v in base.pairs(mesgt.headers) do |
| 195 | coroutine.yield(i .. ':' .. v .. "\r\n") | 198 | coroutine.yield(i .. ':' .. v .. "\r\n") |
| 196 | end | 199 | end |
| 197 | end | 200 | end |
| @@ -200,8 +203,8 @@ end | |||
| 200 | -- message source | 203 | -- message source |
| 201 | function send_message(mesgt) | 204 | function send_message(mesgt) |
| 202 | send_headers(mesgt) | 205 | send_headers(mesgt) |
| 203 | if type(mesgt.body) == "table" then send_multipart(mesgt) | 206 | if base.type(mesgt.body) == "table" then send_multipart(mesgt) |
| 204 | elseif type(mesgt.body) == "function" then send_source(mesgt) | 207 | elseif base.type(mesgt.body) == "function" then send_source(mesgt) |
| 205 | else send_string(mesgt) end | 208 | else send_string(mesgt) end |
| 206 | end | 209 | end |
| 207 | 210 | ||
| @@ -241,3 +244,5 @@ send = socket.protect(function(mailt) | |||
| 241 | s:quit() | 244 | s:quit() |
| 242 | return s:close() | 245 | return s:close() |
| 243 | end) | 246 | end) |
| 247 | |||
| 248 | base.setmetatable(smtp, nil) | ||
