Django로 이메일 전송을 구현하고 있는데 send_mail 함수에서 위와 같은 오류가 났다.
위 오류의 내용은 send_mail의 매개변수 from_email을 안 넘겨 줬다는 소리다.
from django.core.mail import send_mail
send_mail(
subject="Activate your DoranDoran account.",
message="Please Activate your account http://localhost:8000",
recipient_list=[user_instance.user.email],
fail_silently=False,
)
코드는 위와 같았는데, from_email 이 없다고 오류가 난다.
그런데 django.core.mail.send_mail 의 소스코드를 보면 아래와 같이 설명되어 있다.

45번째 줄을 보면 from_email 이 None이면 DEFAULT_FROM_EMAIL을 사용한다고 되어있다. 하지만 같이 써있는 auth_user는 기본값 None이 있는 반면, from_email을 기본값이 설정되어 있지 않다. 그래서 적어주지 않으니 오류가 발생하는 것이다.
결국 해결방법은 from_email을 적어주면 된다.
from django.core.mail import send_mail
send_mail(
subject="Activate your DoranDoran account.",
message="Please Activate your account http://localhost:8000",
from_email=None,
recipient_list=[user_instance.user.email],
fail_silently=False,
)
이렇게 하면 해결되긴 하지만 django 라이브러리에 일관성이 없다고 생각이 든다... PR 보내봐야 겠다.
========================================
PR 보내고 봤더니 이미 이전에 있었던 이슈였다.
https://code.djangoproject.com/ticket/32633#comment:3
#32633 (send_mail must make `from_email` argument optional) – Django
the django docs state that, while sending mail, if no from_email is passed, it will use the DEFAULT_FROM_EMAIL. source: https://docs.djangoproject.com/en/3.1/topics/email/ from_email: A string. If None, Django will use the value of the DEFAULT_FROM_EMAI
code.djangoproject.com
'Python' 카테고리의 다른 글
| [Python] unittest 모든 테스트 코드 실행하기 (0) | 2021.05.29 |
|---|---|
| [Django] Django duplicate app name "auth" (0) | 2021.05.22 |
| [Python] namespace란 (0) | 2021.05.12 |
| [Python] 메타클래스(metaclass) 란? (0) | 2021.05.11 |
| [객체 지향] Python 1급 객체란? (0) | 2021.05.09 |