# signature { license=0, seed=457995617, key="9643bd3c084e15ec101e2f23a235a543" }
--
-- identical to the socket.smtp module except that it uses
-- async wrapped Copas sockets

local copas = require("copas")
local smtp = require("socket.smtp")

local create = function() return copas.wrap(socket.tcp()) end
local forwards = { -- setting these will be forwarded to the original smtp module
	PORT = true,
	SERVER = true,
	TIMEOUT = true,
	DOMAIN = true,
	TIMEZONE = true
}

copas.smtp = setmetatable({}, { 
		-- use original module as metatable, to lookup constants like socket.SERVER, etc.
		__index = smtp,
		-- Setting constants is forwarded to the luasocket.smtp module.
		__newindex = function(self, key, value)
			if forwards[key] then smtp[key] = value return end
			return rawset(self, key, value)
		end,
	})
local _M = copas.smtp

_M.send = function(mailt)
	mailt.create = mailt.create or create
	return smtp.send(mailt)
end

return _M
