192 lines
5.4 KiB
Lua
192 lines
5.4 KiB
Lua
local M = {}
|
|
|
|
require("app.app")
|
|
local http = require("fwutils.httpclient")
|
|
|
|
|
|
|
|
M.get_token = function(app_id,app_secret)
|
|
local token = cache.get_json("aliyun_email_token")
|
|
if token then
|
|
if token.expires > os.time() + 60*60 then
|
|
return true,token.access_token
|
|
end
|
|
end
|
|
|
|
local url = "https://alimail-cn.aliyuncs.com/oauth2/v2.0/token"
|
|
local body = "grant_type=client_credentials&client_id="..app_id.."&client_secret="..app_secret
|
|
local result,err = http.post(url,{
|
|
["Content-Type"] = "application/x-www-form-urlencoded"
|
|
},body)
|
|
if not result then
|
|
return false,err
|
|
end
|
|
local data = cjson.decode(err)
|
|
if data.error ~= nil and data.error ~= "" then
|
|
return false,data.error_description
|
|
end
|
|
|
|
cache.set_json("aliyun_email_token",{
|
|
access_token = data.access_token,
|
|
expires = os.time() + data.expires_in
|
|
})
|
|
return true,data.access_token
|
|
end
|
|
|
|
M.create_msg = function(from,from_name,to,to_name,title,content,app_id,app_secret)
|
|
local ok,access_token = M.get_token(app_id,app_secret)
|
|
if not ok then
|
|
return false,access_token
|
|
end
|
|
local body = {
|
|
message = {
|
|
subject = title,
|
|
summary = content,
|
|
priority = "PRY_HIGH",
|
|
isReadReceiptRequested = false,
|
|
from = {
|
|
email = from,
|
|
name = from_name
|
|
},
|
|
toRecipients = {
|
|
{
|
|
email = to,
|
|
name = to_name
|
|
}
|
|
},
|
|
body = {
|
|
bodyText = content,
|
|
bodyHtml = content
|
|
}
|
|
}
|
|
}
|
|
local url = "https://alimail-cn.aliyuncs.com/v2/users/"..from.."/messages"
|
|
local result,err = http.post(url,{
|
|
["Content-Type"] = "application/json",
|
|
["Authorization"] = "Bearer "..access_token
|
|
},cjson.encode(body))
|
|
if not result then
|
|
return false,err
|
|
end
|
|
local data = cjson.decode(err)
|
|
if data == nil or data.message == nil or data.message.id == nil then
|
|
return false,err
|
|
end
|
|
return true,data.message.id
|
|
end
|
|
M.send = function(from,from_name,to,to_name,title,content,app_id,app_secret)
|
|
local ok,access_token = M.get_token(app_id,app_secret)
|
|
if not ok then
|
|
return false,access_token
|
|
end
|
|
local ok,msg_id = M.create_msg(from,from_name,to,to_name,title,content,app_id,app_secret)
|
|
if not ok then
|
|
return false,msg_id
|
|
end
|
|
local body = {
|
|
saveToSentItems = true
|
|
}
|
|
local url = "https://alimail-cn.aliyuncs.com/v2/users/"..from.."/messages/"..msg_id.."/send"
|
|
local result,err = http.post(url,{
|
|
["Content-Type"] = "application/json",
|
|
["Authorization"] = "Bearer "..access_token
|
|
},cjson.encode(body))
|
|
if not result then
|
|
return false,"send error:"..err
|
|
end
|
|
if err == "{}" then
|
|
return true
|
|
end
|
|
return false,"send error:"..err
|
|
--return true
|
|
end
|
|
M.create_user = function(email_name,password,nickname,jobtitle,app_id,app_secret)
|
|
local ok,access_token = M.get_token(app_id,app_secret)
|
|
if not ok then
|
|
return false,access_token
|
|
end
|
|
local body = {
|
|
email = email_name,
|
|
password = password,
|
|
name = nickname,
|
|
jobTitle = jobtitle,
|
|
departmentIds = {config.email.department_id},
|
|
}
|
|
local url = "https://alimail-cn.aliyuncs.com/v2/users"
|
|
local result,err = http.post(url,{
|
|
["Content-Type"] = "application/json",
|
|
["Authorization"] = "Bearer "..access_token
|
|
},cjson.encode(body))
|
|
if not result then
|
|
return false,"send error:"..err
|
|
end
|
|
|
|
local data = cjson.decode(err)
|
|
if data.email == email_name then
|
|
return true
|
|
end
|
|
return false,"create user error:"..err
|
|
end
|
|
M.delete_user = function(email_name,app_id,app_secret)
|
|
local ok,access_token = M.get_token(app_id,app_secret)
|
|
if not ok then
|
|
return false,access_token
|
|
end
|
|
local url = "https://alimail-cn.aliyuncs.com/v2/users/"..email_name
|
|
local result,err = http.delete(url,{
|
|
["Content-Type"] = "application/json",
|
|
["Authorization"] = "Bearer "..access_token
|
|
})
|
|
if not result then
|
|
return false,"send error:"..err
|
|
end
|
|
return true
|
|
end
|
|
M.getDepartment = function(id,app_id,app_secret)
|
|
local ok,access_token = M.get_token(app_id,app_secret)
|
|
if not ok then
|
|
return false,access_token
|
|
end
|
|
|
|
|
|
local url = "https://alimail-cn.aliyuncs.com/v2/departments/"..id
|
|
local result,err = http.get(url,{
|
|
["Content-Type"] = "application/json",
|
|
["Authorization"] = "Bearer "..access_token
|
|
})
|
|
|
|
if not result then
|
|
return false,"send error:"..err
|
|
end
|
|
print("getDepartment")
|
|
print("result",result)
|
|
print("err",type(err))
|
|
print("err[data]",err)
|
|
|
|
return true
|
|
end
|
|
M.getDepartmentList = function(app_id,app_secret)
|
|
local ok,access_token = M.get_token(app_id,app_secret)
|
|
if not ok then
|
|
return false,access_token
|
|
end
|
|
|
|
local url = "https://alimail-cn.aliyuncs.com/v2/departments/$root/chain"
|
|
local result,err = http.get(url,{
|
|
["Content-Type"] = "application/json",
|
|
["Authorization"] = "Bearer "..access_token
|
|
})
|
|
if not result then
|
|
return false,"send error:"..err
|
|
end
|
|
print("getDepartmentList")
|
|
print("result",result)
|
|
print("err",type(err))
|
|
print("err[data]",err)
|
|
|
|
return true
|
|
end
|
|
|
|
return M
|
|
|