집 >
기술 주변기기 >
IT산업 >
SMTP 서버를 사용하여 Django와 이메일을 보내는 방법
SMTP 서버를 사용하여 Django와 이메일을 보내는 방법
尊渡假赌尊渡假赌尊渡假赌
풀어 주다: 2025-02-08 10:58:10
원래의
532명이 탐색했습니다.
Django 프로젝트에서 이메일 통합을 설정하는 데 어려움을 겪은 적이 있습니까? SMTP 설정 구성, 보안 문제 처리 또는 연락처 양식 자동화에 관계없이 이메일 기능은 사용자 참여 및 신뢰에 중요합니다.
이 튜토리얼에서는 실용적이고 단계별 지침으로 Django를 사용하여 이메일을 보내는 방법을 살펴 보겠습니다. Django SMTP 연결을 구성하는 방법, 이메일 제공 업체의 비밀번호를 설정하는 방법 및 Django Shell을 통해 이메일을 보내는 방법을 다룹니다. 또한 Django 앱의 연락처 양식을 설정하는 방법을 살펴 보겠습니다.이 앱은 고객에게 연락 할 수 있습니다.
.
키 테이크 아웃
SMTP 설정 구성 : 적절한 이메일 백엔드, 호스트, 포트 및 보안 설정 (예 : TLS)으로 Settings.py 파일을 구성하여 DJANGO 이메일 보내기.
Django Environ의 보안 자격 증명 : Django Environ을 사용하여 Environment 변수를 통해 email_host_user 및 email_host_password와 같은 민감한 자격 증명을 관리하여 소스 코드에서 자격 증명의 하드 코딩을 방지합니다.
앱 특정 비밀번호 생성 : Gmail을 사용할 때 2 단계 확인을 활성화하고 앱 비밀번호를 생성하여 기본 비밀번호에 의존하는 대신 Django 메일 전송을 안전하게 인증합니다.
> send_mail과 함께 이메일 보내기 : Django의 내장 Send_mail 함수를 사용하여 Django 쉘, 뷰 또는 재사용 가능한 헬퍼 함수에서 Django와 함께 이메일을 보내십시오.
자동화 된 연락처 양식 구현 : Django 양식을 사용하여 자동화 된 연락처 양식을 작성하고 사용자 문의의 원활한 처리를 위해 이메일 중단 기능을 통합합니다.
> 이메일 기능 테스트 : 단위 테스트로 이메일 중지 로직을 확인하고 안전한 개발 테스트를 위해 Mailhog 또는 Console 이메일 백엔드와 같은 도구를 사용하십시오.
모범 사례 다음 : 재사용 가능성을 위해 TLS 암호화, 적절한 인증 및 모듈 식 이메일 기능을 사용하여 안전하고 효율적인 이메일 제공을 보장합니다.
대부분의 웹 애플리케이션은 이메일을 사용하여 비밀번호 재설정, 계정 활성화, 고객 피드백 수신, 뉴스 레터 보내기 및 마케팅 캠페인과 같은 중요한 작업을 관리합니다. Gmail은 테스트 또는 소규모 프로젝트를 위해 일하는 동안 프로덕션 웹 사이트는 AWS SES, Sendgrid 또는 Mailgun과 같은 전용 이메일 서비스를 사용해야합니다.
그러나 전용 이메일 서비스 사용 비용과 노력을 비교하면 개인 이메일로 이메일을 보내는 것이 소규모 또는 테스트 프로젝트에 더 합리적 일 수 있습니다. 그래서 우리는 여기서 그 접근 방식을 취하기 위해 일을 간단하게 유지할 것입니다.
노트
: 프로덕션 웹 사이트에 개인 이메일 서비스를 사용하는 것은 좋은 생각이 아닙니다.
Gmail에 대한 자세한 내용은 제한
또는 이메일 제공 업체의 제한 사항을 참조하십시오. 참고 :이 튜토리얼의 전체 코드는 github에서 사용할 수 있습니다.
SMTP 서버 및 간단한 메일 전송 프로토콜 이해
SMTP (또는 간단한 메일 전송 프로토콜)는 이메일이 발신자에서 수신자로 전송되는 방법을 결정하기위한 일련의 규칙입니다. SMTP 서버는이 프로토콜을 사용하여 나가는 이메일을 전송하고 중계합니다. (다른 프로토콜은 전자 메일이
수신되는 방법을 적용합니다.)
SMTP 서버에는 항상 고유 주소와 메시지를 보내기위한 특정 포트가 있습니다. 대부분의 경우 587입니다. Django 이메일 보내기의 포트가 어떻게 관련되는지 볼 수 있습니다.
이 예에서는 SMTP 서버를 사용합니다
주소 : smtp.gmail.com
포트 : 587
이제 Django와 함께 이메일을 보낼 수있는 방법을 봅시다.
django 프로젝트 만들기
모든 Django 프로젝트에는 프로젝트 종속성을 망치고 싶지 않기 때문에 가상 환경이 있어야합니다. 하나를 만들려면 다음을 실행하십시오
참고 : 가상 환경에 익숙하지 않은 경우
Python Virtual Environments Guide를 확인하십시오.
위의 명령은 이름 .venv라는 이름의 가상 환경을 만듭니다. 이 가상 환경을 활성화하려면 다음을 사용할 수 있습니다.
Django는 타사 패키지이므로 PIP를 사용하여 설치해야합니다.
이것은 Pip Freeze로 확인할 수있는 최신 버전의 Django를 설치합니다.
Django 프로젝트를 만들려면 명령 줄 유틸리티 Django-Admin을 호출합니다.
위의 명령을 사용하면 emailProject라는 이름으로 django 프로젝트를 만들지 만 원하는 이름으로 프로젝트를 만들 수 있습니다. 이제 프로젝트 디렉토리를 입력하고 서버를 실행하십시오.
Django 서버를 실행 한 후 브라우저에서 http : // localhost : 8000을 방문하십시오. 최신 Django 릴리스 노트가 포함 된 자동 생성 페이지가 표시됩니다.
django 이메일 백엔드 구성
이메일 백엔드는 Django와 함께 이메일을 보내는 메커니즘입니다. Django는 기본적으로 django.core.mail.backends.smtp.emailbackend를 사용하여 SMTP 서버에 연결하고 이메일을 보낼 수 있습니다. 환경 (개발 또는 생산)에 따라 요구에 맞는 다른 이메일 백엔드를 선택할 수 있습니다.
이메일을 보내기 전에 설정 파일을 수정해야하므로 아래 명령으로 해당 파일을 찾아 봅시다.
참고 : Simplicity를 위해서는 UNIX (MacOS 또는 Linux) 시스템 명령 만 사용합니다.
python <span>-m venv .venv</span>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
트리 명령은 디렉토리의 파일 구조를 출력합니다. 이 경우 특정 디렉토리 경로를 제공하지 않으므로 프로젝트의 루트 폴더에 있으면 다음과 비슷한 내용을 얻을 수 있습니다.
이 튜토리얼을 통해 지속적으로 수정하는 파일은 emailproject 폴더 내부의 settings.py입니다. 필요한 모든 프로젝트 구성을 보유하고 있으며 사용자 정의 변수를 설정할 수 있습니다. Django Docs가 말한 것처럼“설정 파일은 모듈 수준 변수가있는 파이썬 모듈”입니다.
Django와 함께 이메일을 보내는 데 필요한 설정을 살펴 보겠습니다. emailproject/settings.py 파일을 열고 파일 하단에 다음 설정을 붙여 넣습니다.
이 설정 각각을 분석하여 위의 코드를 세분화하겠습니다.
이메일 백엔드
email_backend 설정은 Django 프로젝트가 SMTP 서버와 연결하는 데 사용하는 백엔드를 선언합니다.
이 변수는 이메일을 보내는 데 필요한 모든 매개 변수를 수신하는 smtp.emailbackend 클래스를 가리키고 있습니다. Django 소스 코드에서 직접 클래스 생성자를 살펴 보는 것이 좋습니다. 이 코드가 얼마나 읽을 수 있는지 놀랄 것입니다
참고 :이 클래스는 기본 email_backend이지만 Django 설정에서 명시 적으로 좋은 관행으로 간주됩니다.
다른 모든 이메일 설정은이 이메일 백 클래스의 생성자를 기반으로합니다.
이메일 호스트
email_host 설정은 사용중인 SMTP 서버 도메인을 나타냅니다. 이것은 귀하의 이메일 제공 업체에 따라 다릅니다. 아래는 SMTP 서버 호스트가 3 개의 공통 공급자에 해당하는 테이블입니다.
이메일 제공 업체
SMTP 서버 호스트 우리는 나중에 .env 파일을 사용하여 하드 코딩 된 민감한 키나 사이트 별 구성을 피하기 때문에 지금이 설정을 비워두고 있습니다. 자격 증명을 코드로 직접 설정해서는 안됩니다. 이 문제를 해결하기 위해 Django Environ을 사용할 것입니다
이메일 포트
email_port 설정은 대부분의 SMTP 서버의 기본 포트이므로 587로 설정해야합니다. 이것은 개인 이메일 제공 업체의 경우에도 해당됩니다. 이 포트는 이메일 전송의 보안을 보장하기 위해 TLS 암호화와 함께 사용됩니다.
전자 메일 사용 tls
TLS (Transport Layer Security)
원래는 email_use_tls 변수를 true로 설정했습니다. 즉, Django는 전송 계층 보안을 사용하여 SMTP 서버에 연결하고 이메일을 보냅니다. (개인 이메일 제공 업체에게는 필수입니다.) 이메일 호스트 사용자
email_host_user 설정은 개인 이메일 주소입니다. Django-Environ을 사용하여 이러한 자격 증명을 모두 설정하므로 지금은 공허하게하십시오.
이메일 호스트 비밀번호
email_host_password 설정은 이메일 계정에서 얻을 앱 비밀번호입니다.이 섹션 바로 다음에 수행 할 프로세스입니다. 같은 이야기 : 나중에 환경 변수를 사용 하므로이 설정을 비워 두십시오.
다른 제공 업체의 경우 그에 따라 설정을 조정할 수 있습니다. 예를 들면 :
Outlook 구성 :
야후 구성 :
앱 비밀번호로 Gmail SMTP 서버 설정
"덜 안전한 앱"은 Google에서 더 이상 사용되지 않으므로 이메일을 보내기 위해 Gmail 계정에 연결하는 적절하고 안전한 방법은 앱 비밀번호를 사용하는 것입니다. 앱 비밀번호는 Google 계정에 2 단계 확인을 활성화 한 경우에만 사용할 수 있습니다.
앱 비밀번호를 사용하는 이유는 무엇입니까?
보안 대안 : 기본 비밀번호를 공유하는 대신 앱 비밀번호는 특정 응용 프로그램에 대한 제한된 액세스를 제공합니다.
SMTP와 함께 작동합니다 : 앱 비밀번호는 SMTP 액세스에 대한 Gmail의 보안 요구 사항을 준수합니다.
2 단계 검증의 필수 : 2 단계 확인이 활성화되면 앱 비밀번호가 외부 앱이 연결할 수있는 유일한 방법입니다.
.
1 단계 : 2 단계 검증
를 활성화합니다
Google 계정으로 이동하십시오 : https://myaccount.google.com/
왼쪽 메뉴에서 보안으로 이동하십시오
"Google에 로그인하는 방법"섹션으로 스크롤하십시오.
“2 단계 확인”을 클릭하고 화면 지침을 따르십시오.
전화 번호 또는 Authenticator 앱을 사용하여 2 단계 확인을 설정하십시오.
장치로 전송 된 코드로 설정을 확인하십시오.
2 단계 확인이 활성화되면 검색 표시 줄에서 "앱 비밀번호"를 검색하십시오.
거기에 앱 비밀번호의 이름을 입력하고 생성을 클릭하십시오.
.
그러면 16 자 앱 비밀번호로 팝업 모달을 제공합니다. 한 번만 표시되므로 어딘가에 저장하십시오.
다른 이메일 제공 업체를 사용하는 경우 다음 안내서를 읽으십시오.
야후 앱 비밀번호
Outlook 또는 Hotmail 앱 비밀번호
Django Environ을 사용하여 이메일 백엔드 자격 증명을 보호합니다
개발중인 이메일을 보내더라도 소스 코드에 비밀번호를 직접 작성해서는 안됩니다. 이는 GitHub와 함께 버전 제어 시스템을 사용하여 프로젝트를 호스팅 할 때 더욱 중요 해집니다. 사람들이 데이터에 액세스하기를 원하지 않습니다
django-environ을 사용하여이를 방지 할 수있는 방법을 보자.
emailproject 디렉토리 (settings.py 파일이있는 위치) 안에 .env 파일을 만듭니다.
이제 .Env 파일을 열고 다음 키 값 쌍을 입력하십시오.
이 파일의 내용을 분해 :
email_host : 이메일 제공 업체의 SMTP 서버 주소. 빠른 지침은 위의 이메일 호스트 테이블을 참조하십시오. 이 경우 Gmail SMTP 주소 인 smtp.gmail.com을 사용하고 있습니다.
email_host_user : 이메일 주소.
email_host_password : 방금 생성 한 앱 비밀번호입니다. 공간이 포함되어 있지 않습니다.
수신자 _address : 메시지를받을 이메일 주소. 이것은 나중에 모든 이메일을 동일한 수신자에게 보내기 위해 만들 수있는 사용자 정의 설정입니다.
.
이러한 환경 변수를 사용하려면 Django-Eenviron을 설치해야합니다.
참고 : 가상 환경이 활성화되어 있는지 확인하십시오
이제 settings.py를 enailproject 디렉토리에 위치하고 아래 코드를 사용하십시오.
먼저, 설정 파일 상단에서 Environ 패키지를 가져오고 있습니다. 모든 수입은 처음에 있어야한다는 것을 기억하십시오. 그런 다음 .env에서 사용할 수있는 모든 키 값 쌍이 포함 된 ENV 변수를 만듭니다.
env ( 'key') 진술은 우리가 해당 키의 가치를 찾고 있음을 의미합니다. 진행하기 전에 .env 파일을 설정했는지 확인하십시오. 그렇지 않으면 일부 환경 변수가 설정되지 않으면 Django가 부적절하게 구성된 오류가 발생합니다.
참고 : Recepitient_Address는 액세스 할 수있는 주소로 이메일을 보내는 데 사용할 사용자 지정 설정입니다.
git 및 github를 사용하는 경우 .gitignore에 .env 파일을 포함시키는 것을 잊지 마십시오. 당신은 그것을 열고 다음 줄을 추가하면이 작업을 수행 할 수 있습니다 :
1. Django Shell 로 이메일 보내기
마지막으로, 우리는 기사의 육즙이 많은 부분에 도착합니다! 이제 첫 번째 이메일을 Django에 보내야합니다
터미널을 열고 가상 환경을 활성화하고 실행하십시오.