본문 바로가기
Programming

[Django] please run connect() first SMTP 모듈 사용 에러, Django 메일 전송 에러

by 하하호호 2021. 10. 2.
반응형

Error Occur

 

 Django SMTP 모듈을 이용해

메일을 전송하는 코드를 짜는 과정에서

다음 에러가 발생한다.

 

SMTPServerDisconnected at /
please run connect() first

 

에러가 나는 이유를 추측해보면,

EmailMessage를 인스턴스 하고

e.send() 하는 과정에서,

send를 하고 quit()  내부 함수가

작동해서, 추가적으로 get_connection()이

안되는 것이 의심된다.

 

==========================

 

solution1

Email Backend에서 자동으로 호출되는

with as 함수 형태로 메세지를 바꿔본다.

 

from django.core import mail

with mail.get_connection() as connection:
    mail.EmailMessage(
        subject1, body1, from1, [to1],
        connection=connection,
    ).send()
    mail.EmailMessage(
        subject2, body2, from2, [to2],
        connection=connection,
    ).send()

작동안됨

 

solution2 BACKEND 설정 확인

BACKEND에는 다음 항목이 기재된다.

항목이 정확히 입력되었는지 확인한다.

호스트 이름을 가져오지 못하거나,

호스트 유저를 찾지 못하면,

SMTP 서버에 접속이 불가능하다.

 

 

 

solution3 e-mail account 확인

메일을 보낼 경우

EMAIL BACKEND configuration을 확인해야 한다.

 

SMTP 서버를 구글 서버로 사용한다면,

보안탭을 확인한다.

 

구글의 경우 Default값이 

'보안수준이 낮은 앱의 액세스'가 사용안함으로 

체크되어 있다.

 

디폴트 값으로는 SMTP 서버에 접속이 불가능한 

것이다. 해당 항목이 사용으로 체크되어 있는지

확인한다.

 

 

결과는 성공이다.

 

 

추측으로는 

run connect() first 에러가 발생하는 이유는

BACKEND 부분의 설정에 문제가 있는

경우가 많다. 호스트와 호스트유저, 그리고

패스워드를 정확하게 입력했는지,

 

혹시 os.environ('')형식으로 입력하는 경우

import os 와 default setting이 정확하게 

config()되어 있는지 확인이 필요하다.

반응형

댓글