django通过邮件发送文件
我使用的是qq邮箱发送的,前题是QQ邮箱要开通IMAP/SMTP服务。开通方式:QQ邮箱>>设置>>账户>>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。
setting.py设置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # 固定写法
EMAIL_HOST = 'smtp.qq.com' # 腾讯QQ邮箱 SMTP 服务器地址
EMAIL_PORT = 465 # SMTP服务的端口号
EMAIL_HOST_USER = 'code@qq.com' # 发送邮件的QQ邮箱
EMAIL_HOST_PASSWORD = '' # 在QQ邮箱->设置->帐户->“IMAP......服务” 里得到的在第三方登录QQ邮箱授权码
EMAIL_USE_SSL = True
EMAIL_USE_TLS = False
views.py中发送邮件
from django.core.mail import EmailMessage
from rest_framework import viewsets, status, generics
class SendFileAPIView(generics.GenericAPIView):
serializer_class = SendFileSerializer
def post(self, request):
instance_serializer = self.serializer_class(data=request.data)
instance_serializer.is_valid(raise_exception=True)
file_name = instance_serializer.validated_data.get('file_name')
syspath = os.path.dirname(os.path.abspath(__name__))
file_path = os.path.join(syspath, 'excelfile', file_name)
if os.path.isfile(file_path):
email = EmailMessage(
'流调系统文件下载',
file_name+'下载',
'from@qq.com',
['to@qq.com'],
)
email.attach_file(file_path)
email.send()
return Response('success', status=status.HTTP_200_OK)
else:
return Response('no file', status=status.HTTP_200_OK)