Django 회원 가입 이메일 보내기

2022. 2. 5. 13:33강의 정리/Django 기초

반응형

출처 : https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%A5%EA%B3%A0-%EC%9B%B9%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 

장고(Django)를 배우기 시작한 입문자이시거나, 또는 배우고 싶은 생각이 있으신 분은 위 출처의 강의를 적극 추천드립니다!!!

 


 

회원가입 이메일 보내기

 

# 많은 양의 이메일을 동시에 보내야한다면 비동기 방법인 Celery 추천

https://devlog.jwgo.kr/2019/07/02/using-celery-with-django-1/

 

장고(Django)에서 셀러리(Celery) 사용하기 1편 · Tonic

사이트 운영에 도움을 주실 수 있습니다. 고맙습니다. --> 장고(Django)에서 셀러리(Celery) 사용하기 1편 2019년 07월 02일 이 문서는 [Celery 공식 문서](http://docs.celeryproject.org/en/latest/django/)를 번역한 것

devlog.jwgo.kr

 


 

SendGrid를 이용하여 이메일 보내기

 

1. SendGrid에 들어가 회원가입을 하자https://sendgrid.com/

 

Email Delivery Service

Delivering your transactional and marketing emails through the world's largest cloud-based email delivery platform. Send with confidence.

sendgrid.com

 

2. settings > API Keys 로 접속하여서 API Key를 생성한다.

https://app.sendgrid.com/settings/api_keys

 

SendGrid

 

app.sendgrid.com

 

3. API Key 생성 후 뜨는 Create a sender identity 문구 클릭 후 Sender Email 생성

https://app.sendgrid.com/settings/sender_auth/senders/new

 

SendGrid

 

app.sendgrid.com

 

4. 센더 이메일 인증 과정 필요함

 

 

 

 


Django 프로젝트에 적용하기

1. settings(=common)에 SendGrid 설정 추가 

# 실제 예외 발생시 해당 어드민에게 이메일을 발송케 함
ADMINS = [
    ('Dongbaek', 'yardyard@naver.com'), 
]

# Email with Send Grid

SENDGRID_API_KEY = os.environ.get('SENDGRID_API_KEY')

EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey'# this is exactly the value 'apikey'
EMAIL_HOST_PASSWORD = SENDGRID_API_KEY
EMAIL_PORT = 587
EMAIL_USE_TLS =True

# 고정 Sender Email 추가
WELCOME_EMAIL_SENDER = "yardyard@naver.com"

https://docs.sendgrid.com/for-developers/sending-email/django

 

Send SMTP Email with Django

View instructions on how to easily send email with Django using SendGrid, by setting up setting up Django's built in mail library.

docs.sendgrid.com

 

#Views.py를 통해 이메일 보내는 방법

from django.core.mail import send_mail
send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False)

 

2. User 모델 메소드에 이메일 전송 코드 작성

class User(AbstractUser):
    website_url = models.URLField(blank=True)
    bio = models.TextField(blank=True)
    
    def send_welcome_email(self):        
        Subject = render_to_string("accounts/welcome_email_subjects.txt", {
            "user": self,
        })
        content = render_to_string("accounts/welcome_email_contents.txt", {
            "user": self,
        })
        sender_email = settings.WELCOME_EMAIL_SENDER
        send_mail( Subject, content , sender_email , [self.email], fail_silently=False)

 

 

3. 이메일 템플릿 작성

User.send_welcome_email 에서 render_to_string 에 삽입하기 위한 템플릿을 작성하기 

 

txt로 따로 작성하면, 굳이 하드 코딩을 안해도된다!

 

 

#accounts/templates/accounts/welcome_email_subjects.txt

Instagram 가입을 환영합니다!

 

 

#accounts/templates/accounts/welcome_email_contents.txt

Instagram 가입을 환영합니다!

{{ user.first_name }} {{ user.last_name }}님 가입을 환영합니다~!!! 

- Dongbaek 드림

 

 

#쉘에서 실행

$ python manage.py shell
>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> user = User.objects.first()
>>> user.send_welcome_email()  

# 만약 1이 출력되면 성공

 


 

Django SendGrid API Key 획득하고, 환경 변수에 저장

 

#프로젝트/env.sh 파일을 만들고 API를 환경 변수에 저장하기

export SENDGRID_API_KEY=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

 

 

 

 

 

 

 

 

 

 

 

 

 


도움 받은 문서

 

 

 

 

 

반응형