cre*_*eyD 7 python email django
我想让我的用户自己决定他们的电子邮件后端。这就是为什么我在用户上创建了与电子邮件相关的密钥(主机、端口、用户名...),现在我尝试将此(见下文)后端工作到我的 Django 项目中。使用文档和源代码,我的第一次尝试是通过我的自定义“UserBackend”扩展默认的 EmailBackend,它覆盖了__init__这样的函数:
class UserBackend(EmailBackend):
def __init__(self, user_id, host=None, port=None, username=None ...):
user = User.objects.get(id=user_id)
super().init(host=user.email_host, port=user.email_port ...)
Run Code Online (Sandbox Code Playgroud)
当这个方法被调用时(我试图send_mail从 shell 中调用)它没有user_id. 我如何以不同的方式处理这个问题,或者我将如何扩展我的尝试?我不想完全重写 Django 的邮件系统,因为它本身就可以工作。
send_email有一个名为connection(链接到文档)的参数,它似乎非常适合。您可以通过使用用户参数调用get_connection(链接到文档)来获取连接。
connection = get_connection(host=user.email_host, port=user.email_port, ...)
send_email(connection=connection, ...)
Run Code Online (Sandbox Code Playgroud)
如果你想支持多种后端类型,get_connection也支持。
| 归档时间: |
|
| 查看次数: |
204 次 |
| 最近记录: |