Django发送邮件详解:send_mail与send_mass_mail函数

1 下载量 139 浏览量 更新于2024-08-29 收藏 85KB PDF 举报
"在Django中实现邮件发送功能主要依赖于`django.core.mail`模块,该模块对Python的`smtplib`进行了封装,使得邮件发送变得更为便捷。本文将详细介绍如何使用Django的`send_mail`和`send_mass_mail`函数发送邮件。 首先,`send_mail`函数是Django中用于发送单封邮件的主要方法,其基本语法如下: ```python from django.core.mail import send_mail send_mail( subject, # 邮件主题 message, # 邮件内容 from_email, # 发件人邮箱 recipient_list, # 收件人列表,可包含多个收件人 fail_silently=False, # 是否静默处理错误,默认False,即如果发送失败会抛出异常 auth_user=None, # 认证用户名,默认读取settings.py中的配置 auth_password=None, # 认证密码,默认读取settings.py中的配置 connection=None, # 邮件连接对象 html_message=None # HTML格式的邮件内容 ) ``` `send_mass_mail`函数则用于批量发送邮件,接收一个包含多个四元组的列表,每个四元组代表一封邮件的信息(主题、内容、发件人、收件人列表): ```python from django.core.mail import send_mass_mail datatuple = [ ('Subject1', 'Message1', 'from@example.com', ['to1@example.com', 'to2@example.com']), ('Subject2', 'Message2', 'from@example.com', ['to3@example.com']), ] send_mass_mail( datatuple, # 包含多封邮件信息的四元组列表 fail_silently=False, # 同上 auth_user=None, # 同上 auth_password=None, # 同上 connection=None # 同上 ) ``` 在实际使用中,通常会在`settings.py`中配置邮件服务器的相关参数,例如SMTP服务器地址、端口、用户名和密码,以便在调用`send_mail`或`send_mass_mail`时自动使用这些设置: ```python EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # 使用SMTP后端 EMAIL_HOST = 'smtp.example.com' # SMTP服务器地址 EMAIL_PORT = 587 # SMTP服务器端口 EMAIL_USE_TLS = True # 使用TLS加密 EMAIL_HOST_USER = 'your_username' # 邮箱用户名 EMAIL_HOST_PASSWORD = 'your_password' # 邮箱密码 ``` `html_message`参数是`send_mail`函数特有的,用于发送HTML格式的邮件。如果你需要发送富文本邮件,可以提供这个参数,Django会自动处理文本和HTML版本的邮件。 当`fail_silently`设置为`False`(默认值),如果邮件发送过程中发生错误,如网络问题或认证失败,Django会抛出`SMTPException`。如果设置为`True`,则Django会忽略这些错误,不会抛出异常。 返回值是成功发送的邮件数量,对于`send_mail`通常是1,因为一次只发送一封邮件;对于`send_mass_mail`,返回值是成功发送的邮件数量,而非成功的收件人数量。 Django的邮件功能为开发者提供了方便快捷的方式来发送邮件,无论是单封邮件还是批量邮件,只需几行代码即可实现。同时,通过在配置文件中设置全局参数,可以简化代码,提高代码的可读性和维护性。"