1.获取要发送的邮件文本内容

2.发送邮件
This commit is contained in:
李伟 2022-07-18 15:12:06 +08:00
parent 063645e0a1
commit dd26a12fad
5 changed files with 123 additions and 3 deletions

View File

@ -10,9 +10,8 @@ from core.configuration import *
from db import get_database
from db.ckdb import get_ck_db, CKDrive
from models.interview_zsgc import InterviewDo
from utils import get_time, qujian_time, Download_xlsx
from utils import get_time, qujian_time, Download_xlsx, send_str_mail
router = APIRouter()
@ -382,3 +381,46 @@ async def event_edit(
"""
await ckdb.execute(sql)
return schemas.Msg(code=200, msg='ok', data='')
@router.post("/updata_entry")
async def event_edit(
request: Request,
data_in: schemas.Entry,
ckdb: CKDrive = Depends(get_ck_db)
) -> schemas.Msg:
"""修改入职状态"""
sql = f"""
ALTER table HR.resumes update interview_stage = {data_in.interview_stage} WHERE uid = '{data_in.uid}'
"""
await ckdb.execute(sql)
return schemas.Msg(code=200, msg='ok', data='')
@router.post("/get_str_mail")
async def event_edit(
request: Request,
data_in: schemas.Email_str,
ckdb: CKDrive = Depends(get_ck_db)
) -> schemas.Msg:
"""获取邮件文本"""
data = f"""
{data_in.name},您好\n\n感谢关注乐谷在线科技有限公司很高兴的通知您通过了我们的面试真诚的邀请您加入我们的团队\n职位{data_in.job}\n入职时间{data_in.times}
\n薪酬{data_in.money}\n联系人{data_in.hr_name}\n联系电话{data_in.phone}\n联系邮箱{data_in.email}\n\n如有问题请用以上联系方式及时与我们沟通谢谢\n系统邮件请勿回复
"""
return schemas.Msg(code=200, msg='ok', data=data)
@router.post("/send_str_mail")
async def event_edit(
request: Request,
data_in: schemas.send_str_mail,
ckdb: CKDrive = Depends(get_ck_db)
) -> schemas.Msg:
"""发送邮件"""
data=send_str_mail(data_in.email_str,data_in.email)
if data:
return schemas.Msg(code=200, msg='邮件发送成功', data='')
else:
return schemas.Msg(code=200, msg='邮件发送失败', data='')

View File

@ -389,7 +389,10 @@ class Settings(BaseSettings):
class Config:
case_sensitive = True
class Email(Settings):
my_sender = '250213850@qq.com' # 发件人邮箱账号
my_pass = 'whrsugtgkstibjdj' # 发件人邮箱密码
subject = '入职通知' # 邮件的主题,也可以说是标题
# class Debug(Settings):
# MDB_HOST: str = '10.0.0.9'

View File

@ -64,3 +64,29 @@ api:/api/v1/itr/resume_affix
参数:
uid: str # 面试者简历在CK中的唯一标识
resume_affix_id: List[str] # 附件id
#修改入职状态
api:/api/v1/itr/updata_entry
请求方式post
参数:
uid: str # 面试者简历在CK中的唯一标识
interview_stage: int # 修改入职状态 6代表放弃入职7代表已入职
#获取要发送的邮件文本
api:/api/v1/itr/get_str_mail
请求方式post
参数:
name: str # 求职者名字
job: str # 应聘的职位
times: str # 入职时间
money: str # 薪资
hr_name: str # hr联系人
phone: str # hr联系电话
email: str # hr邮箱
#发送邮件
api:/api/v1/itr/send_str_mail
请求方式post
参数:
email: str # 接收者的邮箱
email_str: str # 需要发送的文本内容

View File

@ -30,3 +30,23 @@ class Post_uid(BaseModel):
class get_uid(BaseModel):
uid: str # 面试者简历在CK中的唯一标识
class Entry(BaseModel):
uid: str # 面试者简历在CK中的唯一标识
interview_stage: int # 修改入职状态
class Email_str(BaseModel):
name: str # 求职者名字
job: str # 应聘的职位
times: str # 入职时间
money: str # 薪资
hr_name: str # hr联系人
phone: str # hr联系电话
email: str # hr邮箱
class send_str_mail(BaseModel):
email: str # 接收者的邮箱
email_str: str # 需要发送的文本内容

View File

@ -2,6 +2,11 @@ import random
import time
import datetime
import pandas as pd
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from core.config import Email
def get_uid():
@ -205,3 +210,27 @@ def qujian_time(start_time, end_time):
"""
timess = str(end_time).split(' ')[-1]
return str(start_time) + '~' + timess
# 发送的文本邮件
def send_str_mail(str_msg, my_user):
"""
发送的文本邮件
:param str_msg: 发送的邮件内容
:param my_user: 接收者的邮箱
:return: bool
"""
try:
msg = MIMEText(str_msg, 'plain', 'utf-8')
msg['From'] = formataddr(["乐谷游戏人事", Email.my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To'] = formataddr(["FK", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject'] = Email.subject # 邮件的主题,也可以说是标题
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器端口是25
server.login(Email.my_sender, Email.my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
# server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.sendmail(Email.my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
return True
except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 False
return False