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 = '[email protected]' # 發送郵件的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+'下載下傳',
'[email protected]',
['[email protected]'],
)
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)