그누6 메일 전송 방법을 SMTP>메일건으로 변경하기 정보
그누6 메일 전송 방법을 SMTP>메일건으로 변경하기
본문
그누6에서는 SMTP를 활용하여, 메일 전송을 하고 있지만, 해외 클라우드 환경에서는 SMTP 열기가 참 어렵습니다.
아니 열어 달라고 하면 열어주기는 하지만, 소명해야 하는 등
조금 귀찮아 다른 플러그인을 많이 사용하고 있습니다.
그누5에서 @명랑폐인 님께서 공유해주신 메일건 사용을 하시는 분들이라면
그누6에서도 똑같이 사용할 수 있습니다.
설정 이나 이런건 위 내용에 참고 해주세요
테스트 해보니 메일검사 / 테스트 메일 / 회원가입 관리자 메일전송 / 이메일 인증까지 다 잘됩니다.
로컬에서도 정상적으로 테스트가 잘 되니 적용해보시는 것도 좋을 듯 합니다.
단. 해당 mail 함수 수정 시 원본 업데이트 시 원복 되므로 백업을 통해 주기적으로 해당 함수만 복원해주시면 됩니다.
다른 부분은 건드릴 필요 없이 mailer 함수 하나만 변경 하였습니다.
먼저 requests 를 설치 해야 합니다.
pip install requests
그리고 lib/mail.py 파일을 열어주셔서 상단에 requests 임포트 해주세요
import smtplib
import requests
smtplib 바로 밑에 리퀘스트를 추가해주시면 됩니다.
그리고 _SMTP_PASSWORD = settings.SMTP_PASSWORD 코드 바로 아래에 api 키 및 도메인을 입력해주세요
MAILGUN_API_KEY = "api-key"
MAILGUN_DOMAIN = "send 도메인"
그리고 원래 메일 함수를 주석 달아주세요
혹시 몰라서 지우진 않고 주석만 달았습니다^^;
그리고 pass 다음줄부터 다음 코드를 추가 해주시면 끝입니다.
try:
from_address = formataddr((str(Header(from_name, 'utf-8')), from_email))
to_address = formataddr((str(Header(to_name, 'utf-8')), to_email))
response = requests.post(
f"https://api.mailgun.net/v3/{MAILGUN_DOMAIN}/messages",
auth=("api", MAILGUN_API_KEY),
data={"from": from_address,
"to": [to_address],
"subject": subject,
"html": body})
response.raise_for_status() # 요청이 성공하지 못하면 예외 발생
print("메일이 성공적으로 발송되었습니다.")
except requests.exceptions.RequestException as e:
print(f"메일을 보내는 중에 오류가 발생했습니다. {e}")
이렇게 해주시면, 메일건을 활용한 메일을 완성하실 수 있습니다.
사용법은 기존 메일러 함수와 동일하기 때문에 아무것도 건드릴 필요가 없습니다.
앞서 언급해드린데로 라이브러리 함수 자체를 건드리는 것이라,
추후 업데이트 되었을 때 원상 복구 되는 부분을 감안해 해당 코드 혹은 파일은 별도 보관하시길 바랍니다.
고맙습니다.
!-->!-->!-->!-->1
댓글 0개