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_portSTMP服务器端口(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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

{
    "extend": [{
        "key": "customer_mail_setting",
        "value": {
            "mail_host": "mail.inspur.com",
            "mail_user": "wanghh",
            "mail_port": "30",
            "mail_pwd": "1qaz2wsx?!",
            "mail_post": "inspur.com",
            "to_mail": "$controller['mail']",
            "mail_body": "$message_template",
            "mail_title": "您收到了新的消息",
            "need_login": true,
            "mail_https": true
        }
    }]
}


第二种:系统设置→扩展管理→公司级模版 ,新建mail.setting.json配置文件,在配置文件中添加如下内容:

示例:

{"params":{
            "mail_host": "mail.inspur.com",
            "mail_user": "wanghh",
            "mail_port": "30",
            "mail_pwd": "1qaz2wsx?!",
            "mail_post": "inspur.com",
            "to_mail": "$controller['mail']",
            "mail_body": "$message_template",
            "mail_title": "您收到了新的消息",
            "need_login": true,
            "mail_https": true
        }}

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.查看推送日志:系统设置-安全管理-邮件日志

  • 无标签