Gmail-Socket.gaierr을 통해 이메일을 보내려면 플라스크 메일 사용
-
20-12-2019 - |
문제
플라스크와 플라스크 메일을 사용하여 간단한 연락처 페이지를 구축하고 있습니다.이 튜토리얼 다음 앱을 구축했습니다 - 추가연락처 페이지 - 그리고 이제 메시지를 보내려고 할 때 eror gaierror: [Errno -2] Name or service not known
를받습니다.나는 잠시 동안 오류를 훑어 보았고 라인에서 유사한 예를 찾을 수 없습니다.찾을 수없는 이름이나 서비스가 어떤 이름이나 서비스를 알아낼 수도 없습니다.
트레이스 백 페이지에서 행을 확장하고 일부 파이썬 코드를 실행할 수 있습니다.그것은 모든 변수를 보여주는 dump()
함수를 제공하며 객체에서 호출하여 도움이 될 것인지
routes.py :
from forms import ContactForm
from flask.ext.mail import Message, Mail
mail = Mail()
app = Flask(__name__)
app.secret_key = 'development key'
app.config['MAIL_SERVER'] = 'smtp.google.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'email'
app.config['MAIL_PASSWORD'] = 'password'
mail.init_app(app)
@app.route('/contact', methods=['GET', 'POST'])
def contact():
form = ContactForm()
if request.method == 'POST':
if not form.validate():
.
양식 :
from flask.ext.wtf import Form, validators
from wtforms.fields import TextField, TextAreaField, SubmitField
import wtforms
class ContactForm(Form):
name = TextField("Name", [wtforms.validators.Required('Please enter your name')])
email = TextField("Email", [wtforms.validators.Required('Please enter your email'), wtforms.validators.Email()])
subject = TextField("Subject", [wtforms.validators.Required('Please enter a subject')])
message = TextAreaField("Message", [wtforms.validators.Required('Please enter a message')])
submit = SubmitField("Send")
flash('All fields are required.')
return render_template('contact.html', form=form)
else:
msg = Message(form.subject.data, sender='imauld@gmail.com', recipients=['imauld@gmail.com'])
msg.body = """From: %s <%s> %s""" % (form.name.data, form.email.data, form.message.data)
mail.send(msg)
return render_template('contact.html', success=True)
elif request.method == 'GET':
return render_template('contact.html', form=form)
.
트레이스 백 :
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/ian/PycharmProjects/flaskapp/app/routes.py", line 39, in contact
mail.send(msg)
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask_mail.py", line 415, in send
with self.connect() as connection:
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask_mail.py", line 123, in __enter__
self.host = self.configure_host()
File "/home/ian/PycharmProjects/flaskapp/lib/python2.7/site-packages/flask_mail.py", line 135, in configure_host
host = smtplib.SMTP_SSL(self.mail.server, self.mail.port)
File "/usr/lib/python2.7/smtplib.py", line 776, in __init__
SMTP.__init__(self, host, port, local_hostname, timeout)
File "/usr/lib/python2.7/smtplib.py", line 249, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python2.7/smtplib.py", line 309, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python2.7/smtplib.py", line 781, in _get_socket
new_socket = socket.create_connection((host, port), timeout)
File "/usr/lib/python2.7/socket.py", line 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
gaierror: [Errno -2] Name or service not known
. 해결책
나에게 일하는 설정이 있습니다
app.config['MAIL_SERVER']='smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = 'xx@gmail.com'
app.config['MAIL_PASSWORD'] = 'xx;'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
.
MAIL_USE_TLS 매개 변수는 가지고 있습니다.또한 Mail_Server가 smtp.gmail.com이지만 mail_server가 smtp.gmail.com이지만 mail_server가 smtp.gmail.com으로 설정되어 있는지 확실하지는 않습니다.
편집 : 확인 된대로 주요 문제는 SMTP 호스트가 잘못 설정되었음을 확인했습니다.그것은 항상 smtp.gmail.com
제휴하지 않습니다 StackOverflow