[python] Django를 통해 이메일을 보내는 방법은 무엇입니까?
내에 settings.py
는 다음이 있습니다.
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Host for sending e-mail.
EMAIL_HOST = 'localhost'
# Port for sending e-mail.
EMAIL_PORT = 1025
# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
내 이메일 코드 :
from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['user@gmail.com'])
email.send()
물론을 통해 디버깅 서버를 설정하면 python -m smtpd -n -c DebuggingServer localhost:1025
터미널에서 이메일을 볼 수 있습니다.
그러나 실제로 이메일을 디버깅 서버가 아닌 user@gmail.com으로 보내려면 어떻게해야합니까?
답을 읽은 후에 바로 무언가를 얻으십시오.
-
localhost (simple ubuntu pc)를 사용하여 이메일을 보낼 수 없습니까?
-
장고 1.3
send_mail()
에서는 다소 사용되지 않으며EmailMessage.send()
대신 사용 된다고 생각했습니다 .
답변
이메일을 실제 SMTP 서버로 보냅니다. 직접 설정하지 않으려는 경우 Google과 같이 회사를 운영하는 회사를 찾을 수 있습니다.
답변
Django의 SMTP 서버로 Gmail을 사용합니다. postfix 또는 다른 서버를 다루는 것보다 훨씬 쉽습니다. 저는 이메일 서버를 관리하지 않습니다.
settings.py에서 :
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'me@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
참고 : 2016 년에 Gmail은 기본적으로 더 이상이를 허용하지 않습니다. Sendgrid와 같은 외부 서비스를 사용하거나 Google의이 자습서를 따라 보안을 낮추지 만 https://support.google.com/accounts/answer/6010255 옵션을 허용 할 수 있습니다.
답변
- 프로젝트를 작성하십시오.
django-admin.py startproject gmail
-
아래 코드를 사용하여 settings.py를 편집하십시오.
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = 'youremail@gmail.com' EMAIL_HOST_PASSWORD = 'email_password' EMAIL_PORT = 587
-
대화식 모드를 실행하십시오.
python manage.py shell
-
EmailMessage 모듈을 가져 오십시오.
from django.core.mail import EmailMessage
-
이메일을 보내십시오 :
email = EmailMessage('Subject', 'Body', to=['your@email.com']) email.send()
자세한 내용 은 문서의 확인 send_mail
및 EmailMessage
기능을 참조하십시오 .
Gmail 업데이트
또한 Gmail을 통해 이메일을 보내는 데 문제가있는 경우 Google 에서이 가이드 를 확인하십시오 .
Google 계정 설정에서 Security > Account permissions > Access for less secure apps
에서이 옵션으로 활성화하십시오.
또한 귀하의 Gmail 앱의 특정 암호를 생성 하면 한 후에 켜져 2 단계 검증 그것을 위해.
그런 다음 설정에서 앱 비밀번호 를 사용해야 합니다 . 따라서 다음 줄을 변경하십시오.
EMAIL_HOST_PASSWORD = 'your_email_app_specific_password'
또한 HTML 이메일을 보내려면 이 내용을 확인하십시오 .
답변
내 사이트가 호스팅되고 Godaddy
개인 이메일이 동일하게 등록되어 있습니다. 이들은 나를 위해 일한 설정입니다.
settings.py에서 :
EMAIL_HOST = 'mail.domain.com'
EMAIL_HOST_USER = 'abc@domain.com'
EMAIL_HOST_PASSWORD = 'abcdef'
DEFAULT_FROM_EMAIL = 'abc@domain.com'
SERVER_EMAIL = 'abc@domain.com'
EMAIL_PORT = 25
EMAIL_USE_TLS = False
쉘에서 :
from django.core.mail import EmailMessage
email = EmailMessage('Subject', 'Body', to=['def@domain.com'])
email.send()
그런 다음 O / P 즉 성공으로 “1”을 받았습니다. 그리고 메일도 받았습니다. 🙂
- domain.com의 의미는 무엇입니까?
답변
Django 버전 1.7의 경우 위의 솔루션이 작동하지 않으면 다음을 시도하십시오.
에서 settings.py 추가
#For email
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'sender@gmail.com'
#Must generate specific password for your app in [gmail settings][1]
EMAIL_HOST_PASSWORD = 'app_specific_password'
EMAIL_PORT = 587
#This did the trick
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
마지막 줄은 django 1.7의 트릭을 수행했습니다.
답변
settings.py에서 백엔드 로 smtp 를 사용해야합니다.
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
백엔드를 콘솔로 사용하면 콘솔에서 출력을받습니다.
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
또한 아래 설정 또한
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'urusername@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
이를 위해 gmail 을 사용하는 경우 2 단계 인증 및 애플리케이션 비밀번호를 설정 하고 해당 비밀번호를 EMAIL_HOST_PASSWORD 값 이상으로 복사하여 붙여 넣습니다.
답변
Django로 이메일을 보내는 가장 쉬운 방법은 SendGrid를 사용하는 것입니다. 작동 방식은 다음과 같습니다.
- SendGrid 계정을 만들고 이메일을 확인하십시오.
- 에 다음을 추가하십시오
settings.py
.
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = '<your sendgrid username>'
EMAIL_HOST_PASSWORD = '<your sendgrid password>'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
그리고 당신은 모두 설정되었습니다!
이메일을 보내려면 :
from django.core.mail import send_mail
send_mail('<Your subject>', '<Your message>', 'from@example.com', ['to@example.com'])
500 내부 서버 오류가 발생할 때마다 Django에서 이메일을 보내려면 다음을 추가하십시오 settings.py
.
DEFAULT_FROM_EMAIL = 'your.email@example.com'
ADMINS = [('<Your name>', 'your.email@example.com')]
SendGrid로 이메일을 보내는 것은 한 달에 최대 12k 개의 이메일을 무료로받습니다.