1.邮件开通
邮件类型:
邮件服务可以使用HCM提供的服务,也可以配置客户自己的邮箱,作为发件邮箱(注意要企业邮箱,个人邮箱有发件数量限制,简单测试系统邮件服务是可以使用个人邮箱测试)
1.使用hcm邮件服务
hcm邮件服务网络测试:上应用服务器执行: ping hcm-mail.hcmcloud.cn 查看网络是否可用(由部署老师或者实施上服务器操作)
网络通的话,咨询客户运维人员,获取服务器出口IP 提供给班老师,添加进HCM的邮件服务白名单内,否则邮件还是不可用
2.使用客户自己的邮件服务
查看第二点"参数配置"
检测服务器网络可以用:登录客户应用服务器 telnet mail_host:mail_port 网络通才可用
按照第二点配置邮件参数,然后调用接口测试即可,要注意mail_https这个值,不是固定的,要测试才能确定(这要看客户的邮件服务器的认证类别)。
如何排查邮件通过客户服务器发送还是浪潮服务器发送
新建云函数,类型为openAPI,内容如下:
class PrivateAPIService(BasePrivateApiService):
"""
动态私有OpenAPI
使用方法
"""
def execute(self, **kwargs):
return {"re":self.env.get_conf("email_service", "remote_url")}
云函数新建完成后,进行一下操作
查看接口返回值是否为浪潮服务器,如果是返回信息如图所示,那么就是使用本地邮件,如果是返回hcm-mail开头的地址,那就是使用浪潮的邮件服务发邮件,如果要使用自己的邮件服务,联系班老师修改服务器配置,去掉"email_service.remote_url"
2.参数配置
当前邮件配置有两种方式,两种配置方式需要的参数都一样,第一种是元数据配置,所有新公司如果需要邮件服务都使用第一种配置,当前使用第二种的公司请替换成第一种,第二种以后会停用,最终统一使用第一种的元数据配置:
下面以公司邮箱langchao@inspur.com 为例
mail_host | 邮箱对应的SMTP服务地址 | 点击查看各种邮箱SMTP |
mail_user | 邮箱用户(例: langchao@inspur.com) | |
mail_port | STMP服务器端口(SSL加密端口) | 配置时看邮箱情况是否需要该参数,有的邮箱在服务器端用该参数会被拦截,在测试时如果发邮件不成功可以尝试去掉该参数 |
mail_pwd | 邮箱授权码 | 获取案例:https://zhuanlan.zhihu.com/p/551399559 |
mail_post | 邮箱后缀( inspur.com) | |
to_mail | 邮件发送目的邮箱帐号(langchao@inspur.com) | |
mail_body | 邮件内容,正文 | |
mail_title | 邮件标题 | 标题要有个性化,不然容易被视为垃圾邮件从而收不到,最好带上姓名,时间之类的有明显区别的词汇 |
need_login | 是否需要登陆,默认true | |
mail_https | 是否判断为https登陆,默认false | 该参数是否需要传看邮件服务器ssl的登录情况,如果不确定在配置时可以分别设置为true和false ,测试邮件是否发送成功 |
第一种(推荐使用): 系统设置→扩展管理→对象管理器,然后在搜索栏搜索CompanyParams,单击CompanyParams,在基本信息栏,点击元数据编辑:添加如下配置内容(可视化配置地址:域名+/common_model_view/base?key=base_info&model=CompanyParamsVirtual&id=1):
示例:
1 |
|
第二种:系统设置→扩展管理→公司级模版 ,新建mail.setting.json配置文件,在配置文件中添加如下内容:
示例:
|
2.测试案例及效果
{
"params": {
"mail_host": "smtp.exmail.qq.com",
"mail_user": "ncpehr@ncpe.com.cn",
"mail_port": "465",
"mail_pwd": "t6muTAGb67ibengA",
"mail_post": "ncpe.com.cn",
"to_mail": "huangchaobin@inspur.com",
"mail_body": "邮件测试邮件测试",
"mail_title": "hcb的邮件测试",
"need_login": true,
"mail_https": true
}
}
3.邮件消息模版
3.1邮件个性化模板配置:公司级模版搜索,如果没有就新建 mail.template.json,格式:消息类别:{"template":"html模板"}
以人员信息导出为案例:
查看消息类别,进入人力系统,打开检查,点击系统通知,找到message.list接口,查看具体消息的message_type字段,消息类别大体就是这个,也可以咨询对应业务的研发老师,了解消息类别,图中的消息类别就是imp_exp_emp。
如果要配置这一类消息的邮件发送格式,就可以在mail.template.json中添加一项
"imp_exp_emp":{"template":"imp_exp_emp_mail_template.html"}
案例:
可替换内容:
默认:
company_name:公司名称,前往系统设置-企业设置-企业信息管理-企业名称
content: 消息内容,对应系统消息内容
resume_url :消息链接,如果没有登录系统,点击链接会先跳转到登录页面,登录完成后会跳转到具体消息
个性化替换:
需要业务在发送消息时,在extend_dict参数中传入需要替换的内容,然后在Html中配置一个{{key}}就会替换成对应的值
例如:extend_dict:{"name":"张三"},html中配置了{{name}},就会被替换为“张三”
4.常见报错及处理
4.1 问题一:报smtplib.SMTPAuthenticationError 505/535 的解决方法
授权码不对
4.2 问题二:邮件测试返回错误信息,出现 conection closed,tsl,ssl 相关信息的,只能上服务器去手动发测试,测试案例,以qq邮箱为例:
base64编码:https://www.qqxiuzi.cn/bianma/base64.htm
格式:
telnet mail_host mail_port
EHLO mail_host
AUTH LOGIN
第一条输入账号(base64编码)
第二条输入授权码(base64编码)
MAIL FROM mail_user
RCPT TO to_mail
data (具体数据)
from:发送者
to:接收者
subject:邮件标题
. 结束标志
测试:
telnet smtp.qq.com 25
HELO host
AUTH LOGIN
第一条输入账号(base64编码)
第二条输入授权码(base64编码)
mail from:<2284441482@qq.com>
rcpt to:<2284441482@qq.com>
data 输入数据后 回车
from:2284441482@qq.com
to:2284441482@qq.com
subject:"测试" #邮件主题,接下来空一行是发送的数据
邮件测试
. # . 加回车表示输入完毕,按”回车键“ 表示发送 从from到'.'都是data内容
4.3使用浪潮的邮件服务,开通邮件服务后,发送邮件无法收到,可以前往系统设置-安全管理-邮件日志查看,如果有以下报错内容,是网络不通,联系班老师或者(客户开通网络),地址:hcm-mail.hcmcloud.com
4.4 邮件配置都通了,但是发送失败,有以下信息:意味着账号+授权码登录账号失败,需要检查账号+授权码是否正确
4.5 邮件内容存在特殊文字,导致无法发送
6.查看推送日志:系统设置-安全管理-邮件日志