📅  最后修改于: 2023-12-03 15:23:08.319000             🧑  作者: Mango
在 Web 开发中,发送电子邮件是一个常见的需求场景。Django 提供了一种简单、方便的方式来发送电子邮件。
在 Django 项目中发送电子邮件,我们需要在 settings.py
文件中配置邮件相关的参数。以下是一个示例配置:
# settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your_email@gmail.com'
EMAIL_HOST_PASSWORD = 'your_email_password'
在这个示例配置中,我们使用 Gmail 作为邮件服务器,使用 SMTP 协议发送邮件。当然,你也可以使用其他邮件服务器和协议,只需要相应更改配置即可。
Django 提供了一个 send_mail
函数,用于发送邮件。该函数定义如下:
from django.core.mail import send_mail
send_mail(
subject, # 主题
message, # 正文
from_email, # 发件人地址
recipient_list, # 收件人地址列表
fail_silently=False, # 是否开启静默模式
auth_user=None, # 发件人账号信息
auth_password=None, # 发件人账号信息
connection=None, # 邮件服务器连接对象
html_message=None, # HTML 格式的邮件内容
)
以上是 send_mail
函数的完整参数列表。其中,subject
、message
、from_email
、recipient_list
四个参数是必须提供的。
以下是一个示例邮件发送代码:
from django.core.mail import send_mail
subject = 'test email'
message = 'this is a test email from django'
from_email = 'your_email@gmail.com'
recipient_list = ['recipient1@gmail.com', 'recipient2@gmail.com']
send_mail(subject, message, from_email, recipient_list)
在这个示例代码中,我们创建了一个主题为 'test email'
,正文为 'this is a test email from django'
的邮件,并将其发送给了两个收件人。
除了纯文本格式的邮件外,还可发送 HTML 格式的邮件。在 send_mail
函数中,你可以使用 html_message
参数(HTML 格式的邮件内容)来实现。
以下是一个示例代码:
from django.core.mail import send_mail
subject = 'test email'
message = 'this is a test email from django'
from_email = 'your_email@gmail.com'
recipient_list = ['recipient1@gmail.com', 'recipient2@gmail.com']
html_message = '<html><body><h1>this is a test email from django</h1></body></html>'
send_mail(subject, message, from_email, recipient_list, html_message=html_message)
在这个示例代码中,我们增加了一个 html_message
参数,其值为 HTML 格式的邮件内容。
如果你需要发送带附件的邮件,可以使用 Django 提供的 EmailMessage
类。该类定义如下:
from django.core.mail import EmailMessage
email = EmailMessage(
subject, # 主题
message, # 正文
from_email, # 发件人地址
recipient_list, # 收件人地址列表
cc=None, # 抄送地址列表
bcc=None, # 密送地址列表
reply_to=None, # 回复地址
headers=None, # 邮件头信息
attachments=None, # 附件列表
connection=None, # 邮件服务器连接对象
alternatives=None, # 备用格式邮件列表
subtype=None, # 邮件子类型
encoding=None, # 邮件编码方式
**kwargs
)
除 send_message
函数支持的参数外,EmailMessage
还支持 cc
、bcc
、reply_to
、headers
、attachments
等参数,允许你对邮件进行更加细致的控制。
以下是一个示例代码:
from django.core.mail import EmailMessage
subject = 'test email with attachment'
message = 'this is a test email from django'
from_email = 'your_email@gmail.com'
recipient_list = ['recipient1@gmail.com', 'recipient2@gmail.com']
html_message = '<html><body><h1>this is a test email from django</h1></body></html>'
attachment = ('file.pdf', open('/path/to/file.pdf', 'rb').read())
email = EmailMessage(subject, message, from_email, recipient_list, html_message=html_message)
email.attach(*attachment)
email.send()
在这个示例代码中,我们创建了一个主题为 'test email with attachment'
,正文为 'this is a test email from django'
的邮件,并将其发送给了两个收件人。邮件附件是一个名为 'file.pdf'
的 PDF 文件。我们使用 EmailMessage
类来创建邮件,并使用 attach
方法将附件添加到邮件中。
以上就是在 Django 中发送电子邮件的介绍。希望这篇文章对你有所帮助!