在django中实现邮件发送

今天看了下如何在django中发送邮件,看的时候有些地方不懂,但是在实践了一下后就明白了,废话不多说,直接上笔记

	from django.core.mail import send_mail, send_mass_mail, mail_admins
	# 单发的邮件
	"""
	    send_main(subject,message,from_email,recipient_list,fail_silently = False,auth_user = None,auth_password = None,connection = None,html_message = None)
	    参数1:一个字符串,表示文件的主题
	    参数2:一个字符串,邮件的内容
	    参数3:一个字符串,发送者
	    参数4:字符串列表,表示收件人
	    参数5:为False时,send_mail()在发生错误时会抛出 smtplib.SMTPException异常
	    参数6:可选的用户名用来验证SMTP服务器,如果你要特别指定使用哪个邮箱帐号,就指定这个参数。如果没有提供这个值,Django将会使用settings中EMAIL_HOST_USER的值
	    参数7:可选的密码用来验证SMTP服务器。如果没有提供这个值,Django 将会使用settings中EMAIL_HOST_PASSWORD的值。
	    参数8:可选的用来发送邮件的电子邮件后端
	    参数9:如果提供了html_message,可以发送带HTML代码的邮件
	"""
	# 群发的邮件
	"""
	    send_mass_mail(datatuple,fail_silently = False,auth_user = None,auth_password = None,connection = None)
	    参数1:是一个元组,每个元组的类型为(subject,message,from_email,recipient_list)
	    参数2:参数3:参数4:参数5:与send_mail()中的相同
	"""
	# 向管理员发送邮件
	"""
	    mail_admins(subject,message,fail_silently = False,connection = None,html_message = None)
	    使用EMAIL_SUBJECT_PREFIX设置的值为邮件标题前缀,默认为'Django'
	    使用SERVER_EMAIL的值为发件人
	    会向ADMINS = (('1531391246', '1531391246@qq.com'),)中设置的邮箱发送邮件
	"""
	"""
	    mail_managers(subject,message,fail_silently = False,connection = None,html_message = None)
	    与上一个类似
	"""

下面再来看一下settings.py中的配置

	EMAIL_HOST = 'smtp.qq.com'  # 设置SMTP服务器,网易的为 smtp.163.com,其他的以此类推
	EMAIL_PORT = 25   # 设置端口,一般都是25
	EMAIL_HOST_USER = "153*******@qq.com"  # 你的邮箱地址
	EMAIL_HOST_PASSWORD = ""  # 这个时邮箱的授权码,不是登陆密码
	EMAIL_SUBJECT_PREFIX = "[你的博客]"  # 邮件标题的前缀
	SERVER_EMAIL = "153*******@qq.com"  # 管理员的邮箱的地址
	# 这是在生产环境中,如果发生错误,发送邮件到这个邮箱
	ADMINS = (('153*******', '153*******@qq.com'),)

暂时只看到了这里,其他的过几天补充

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django REST framework 实现邮件批量发送,可以使用 Django 自带的邮件发送功能和 DRF 的 Serializer 来完成。 首先,在 Django 项目配置邮件发送功能,具体步骤如下: 1. 在 settings.py 文件添加以下配置: ``` 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_email@example.com' # 发送邮件的邮箱地址 EMAIL_HOST_PASSWORD = 'your_email_password' # 发送邮件的邮箱密码 ``` 2. 在 Django 项目编写发送邮件的代码,例如下面的代码实现了邮件批量发送的功能: ```python from django.core.mail import send_mail from django.shortcuts import get_object_or_404 from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView from .models import User from .serializers import UserSerializer class EmailUsersView(APIView): def post(self, request): serializer = UserSerializer(data=request.data, many=True) if serializer.is_valid(): recipients = [] for user_data in serializer.validated_data: user = get_object_or_404(User, email=user_data['email']) recipients.append(user.email) subject = '邮件主题' message = '邮件内容' from_email = '发件人邮箱' send_mail(subject, message, from_email, recipients) return Response(serializer.validated_data, status=status.HTTP_200_OK) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) ``` 在上面的代码,我们首先使用 UserSerializer 对请求的数据进行反序列化,并验证数据的有效性。然后,我们遍历验证后的数据,获取每个用户的邮箱地址,并将其添加到收件人列表。最后,我们使用 Django 自带的 send_mail 函数发送邮件。 最后,在 urls.py 文件定义 URL 路由,将请求映射到 EmailUsersView 类: ```python from django.urls import path from .views import EmailUsersView urlpatterns = [ path('email_users/', EmailUsersView.as_view(), name='email_users'), ] ``` 这样就完成了在 Django REST framework 实现邮件批量发送的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值