[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으로 보내려면 어떻게해야합니까?

답을 읽은 후에 바로 무언가를 얻으십시오.

  1. localhost (simple ubuntu pc)를 사용하여 이메일을 보낼 수 없습니까?

  2. 장고 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 옵션을 허용 할 수 있습니다.


답변

  1. 프로젝트를 작성하십시오. django-admin.py startproject gmail
  2. 아래 코드를 사용하여 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
  3. 대화식 모드를 실행하십시오. python manage.py shell

  4. EmailMessage 모듈을 가져 오십시오.

    from django.core.mail import EmailMessage
  5. 이메일을 보내십시오 :

    email = EmailMessage('Subject', 'Body', to=['your@email.com'])
    email.send()

자세한 내용 은 문서의 확인 send_mailEmailMessage기능을 참조하십시오 .

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를 사용하는 것입니다. 작동 방식은 다음과 같습니다.

  1. SendGrid 계정을 만들고 이메일을 확인하십시오.
  2. 에 다음을 추가하십시오 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 개의 이메일을 무료로받습니다.