local M = {} require("app.app") require("redis.conn") local http = require("httpclient") M.get_token = function(app_id,app_secret,rds) local token = rds:get("aliyun_email_token") if token then return true,token 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 rds:setex("aliyun_email_token",data.expires_in,data.access_token) return true,data.access_token end M.create_msg = function(from,from_name,to,to_name,title,content,app_id,app_secret,rds) local ok,access_token = M.get_token(app_id,app_secret,rds) 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,rds) local ok,access_token = M.get_token(app_id,app_secret,rds) 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,rds) 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,rds) local ok,access_token = M.get_token(app_id,app_secret,rds) 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,rds) local ok,access_token = M.get_token(app_id,app_secret,rds) 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,rds) local ok,access_token = M.get_token(app_id,app_secret,rds) 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,rds) local ok,access_token = M.get_token(app_id,app_secret,rds) 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