smtplib.SMTPServerDisconnected
smtplib.SMTPServerDisconnected: please run connect() first
# app/email.py 안의 mail.send(msg) 부분에서 문제가 발생하는것같아요.
메일 발송을 위한 데몬이 작동되어야하는데 작동이 안된 상태에서 메일 발송을 시도하면서 발생하는 문제인것같은데...
아래 설정들로 잘 세팅해두고 진행했어요.
그런데 왜 자꾸 메일 발송이 되지 않는지 모르겠네요.
비고1 : 플라스크 서버를 작동시키고 # netstat -nplt 커맨드를 입력해보면, 원하는 대로 메일 데몬이 올라오지 않습니다.
에러 발생되면서 메일 발송이 안됩니다
해결 요청드립니다 T^T
export MAIL_SERVER=smtp.googlemail.com
export MAIL_PORT=587
export MAIL_USE_TLS=1
export MAIL_USERNAME=growingsajatest
export MAIL_PASSWORD=testpassword
(비밀번호는 바꿨어요 일부러)
변수 정상적으로 잘 불러오는 것 확인 됬습니다.
아래 파이썬 파일 내부에서 모듈 불러오는 부분 등은 모두 정상입니다.
flask server run은 정상적으로 되지만, mail server run이 함께 진행되지 않는 이유를 모르겠습니다.
# vim microblog.py
from app import app
if __name__ == '__main__':
app.run(host='0.0.0.0', port='5001', debug=True)
# vim app/__init__.py
from flask import Flask
from config import Config
from flask_mail import Mail
app = Flask(__name__)
app.config.from_object(Config)
# Flask-Mail 인스턴스
mail = Mail(app)
# routes와 데이터베이스 구조 정의하는 models 호출
from app import routes, models
# vim config
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config(object):
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
# 이메일 구성
MAIL_SERVER = os.environ.get('MAIL_SERVER')
MAIL_PORT = int(os.environ.get('MAIL_PORT') or 25)
MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS') is not None
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
ADMINS = ['growingsajatest@gmail.com']
# vim app/email.py
from flask_mail import Message
from app import mail
def send_email(subject, sender, recipients, text_body, html_body):
msg = Message(subject, sender=sender, recipients=recipients) # 메일 세팅
msg.body = text_body # text body
msg.html = html_body # html body
mail.send(msg) # 메일 발송
from flask import render_template
from app import app
# 비밀번호 재설정 이메일 보내기 기능
def send_password_reset_email(user):
token = user.get_reset_password_token()
send_email('[Microblog] Reset Your Password',
sender=app.config['ADMINS'][0],
recipients=[user.email],
text_body=render_template('email/reset_password.txt',
user=user, token=token),
html_body=render_template('email/reset_password.html',
user=user, token=token))
# 이메일의 텍스트 및 HTML 내용이 익숙한 render_template() 기능을 사용하여 템플릿에서 생성됨
# 템플릿은 사용자와 토큰을 인수로 받아 개인화된 이메일 메시지를 생성할 수 있음
설정값들 중 어느 부분에 문제가 있는건지 도저히 모르겠네요.
T^T
의견 받습니다. 감사합니다.
'Development > Flask with Python' 카테고리의 다른 글
[Python3][Flask1.1] Flask로 blog 웹개발 실습 - 17 : Face Lift with Bootstrap (css) (0) | 2019.12.14 |
---|---|
[Python3][Flask1.1] Flask로 blog 웹개발 실습 - 15 : 비밀번호 재설정 기능 (0) | 2019.12.13 |
pyenv 설치 및 설정 이후, flask 정상작동을 위해 필요한 명령어들 (0) | 2019.12.13 |
[Python3][Flask1.1] Flask로 blog 웹개발 실습 - 14 : Pagination, 페이지 번호 매기기 (0) | 2019.12.13 |
[Python3][Flask1.1] Flask로 blog 웹개발 실습 - 13 : 글 작성 기능 & 검색 기능 추가 (0) | 2019.12.12 |