conf = ConnectionConfig(
USERNAME=config.mail_username,
PASSWORD=config.mail_pasword,
FROM=config.mail_from,
PORT=config.mail_port,
SERVER=config.mail_server,
USE_CREDENTIALS=True,
VALIDATE_CERTS=True,
TEMPLATE_FOLDER='./templates'
)
async def send_email(email_to: EmailSchema, body:EmailSchema) -> JSONResponse:
message = MessageSchema(
subject="fastapi",
recipients=[email_to],
body=body,
subtype="html"
)
fm = FastMail(conf)
await fm.send_message(message,template_name='email.html')
data="xyz"
@app.get("/email")
async def endpoint_send_email(
):
await send_email(
email_to=email_to,
body=data
)
email.html
<!DOCTYPE html>
<html>
<head>
<title>email</title>
</head>
<body>
<h4>Hi Team</h4>
<p>get the data of date {{date}}</p><br />
{{body.data}}
<br /><br />
<h4>thanks,</h4>
<h4>Team</h4>
</body>
</html>
当我尝试不使用template_name发送电子邮件时,它使用正文值发送xyz(纯文本)
我需要发送此模板格式,如果我使用模板名称,我得到下面的错误。请帮助我找到解决方案,谢谢
类型错误:“posixpath”对象不是可迭代的python
1条答案
按热度按时间odopli941#
好的,你把你的HTML文件作为文本传递,所以这就是为什么你不会收到作为模板的电子邮件。你可以使用jinja 2库来呈现你的模板并正确地发送它。你创建一个环境变量
然后使用MessageSchema并像以前那样发送它!希望我的回答对您有所帮助