| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- 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
|