我正在尝试在管理员中配置EMAIL_HOST设置,我将创建一个包含必填字段的模型:
但是如何使用send_mail在视图中使用这些字段?
答案 0 :(得分:3)
如果您想使用send_mail
,则必须创建自己的email backend,其中使用您的自定义设置,然后将其传递到send_mail
属性中的connection
答案 1 :(得分:0)
使用管理页面中自定义配置的SMTP设置发送邮件,该设置独立于Django设置:
from django.core import mail
from django.core.mail.backends.smtp import EmailBackend
from <'Your SMTP setting in admin'> import <'Your model'>
def send_mail(subject, contact_list, body):
try:
con = mail.get_connection()
con.open()
print('Django connected to the SMTP server')
mail_setting = <'Your model'>.objects.last()
host = mail_setting.host
host_user = mail_setting.host_user
host_pass = mail_setting.host_pass
host_port = mail_setting.host_port
mail_obj = EmailBackend(
host=host,
port=host_port,
password=host_pass,
username=host_user,
use_tls=True,
timeout=10
)
msg = mail.EmailMessage(
subject=subject,
body=body,
from_email=host_user,
to=[contact_list],
connection=con,
)
mail_obj.send_messages([msg])
print('Message has been sent.')
mail_obj.close()
print('SMTP server closed')
return True
except Exception as _error:
print('Error in sending mail >> {}'.format(_error))
return False