登陆

phpStudy V8.0.8版本更新日志(2019.8.20)

1.学习Flask Web开发这本书,在8.6.2发送确认邮件的时候没收到电子邮件,邮箱我改成qq邮箱了,但是报错了,感觉像是和线程有关。

(1)email.py的代码

from threading import Thread
from flask import current_app, render_template
from flask_mail import Message
from .import mail


def send_async_email(app,msg):
    with app.app_context():
        mail.send(msg)


def send_email(to, subject, template, **kwargs):
    app = current_app._get_current_object()
    msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX'] + ' ' + subject,
                  sender=app.config['FLASKY_MAIL_SENDER'], recipients=[to])
    msg.body = render_template(template + '.txt', **kwargs)
    msg.html = render_template(template + '.html', **kwargs)
    thr = Thread(target=send_async_email, args=[app,msg])
    thr.start()
    return thr

(2)和邮件相关的配置

    MALL_SERVER = 'smtp.qq.com'
    MAIL_PORT = 25
    MAIL_USE_TLS = True
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    FLASKY_MAIL_SUBJECT_PREFIX = '[FLASKY]'
    FLASKY_MAIL_SENDER = '480***140@qq.com'

(3)注册用户的时候发送确认代码的路由

@auth.route('/register', methods=['GET', 'POST'])
def register():
    form = RegistrationForm()
    if form.validate_on_submit():
        user = User(email=form.email.data,
                    username=form.username.data,
                    password=form.password.data)
        db.session.add(user)
        db.session.commit()
        token = user.generate_confirmation_token()
        send_email(user.email, 'Confirm Your Account',
                   'auth/email/confirm', user=user, token=token)
        flash('A confirmation email has been sent to your email.')
        return redirect(url_for('auth.login'))
    return render_template('auth/register.html', form=form)

(4)报错信息

Exception in thread Thread-2:
Traceback (most recent call last):
  File "E:\python2.7.9\Lib\threading.py", line 810, in __bootstrap_inner
    self.run()
  File "E:\python2.7.9\Lib\threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "F:\flasky\app\emali.py", line 9, in send_async_email
    mail.send(msg)
  File "F:\flasky\venv\lib\site-packages\flask_mail.py", line 491, in send
    with self.connect() as connection:
  File "F:\flasky\venv\lib\site-packages\flask_mail.py", line 144, in __enter__
    self.host = self.configure_host()
  File "F:\flasky\venv\lib\site-packages\flask_mail.py", line 158, in configure_host
    host = smtplib.SMTP(self.mail.server, self.mail.port)
  File "E:\python2.7.9\Lib\smtplib.py", line 256, in __init__
    (code, msg) = self.connect(host, port)
  File "E:\python2.7.9\Lib\smtplib.py", line 316, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "E:\python2.7.9\Lib\smtplib.py", line 291, in _get_socket
    return socket.create_connection((host, port), timeout)
  File "E:\python2.7.9\Lib\socket.py", line 571, in create_connection
    raise err
error: [Errno 10061]

2.然后我回到第六章再重新撸了一遍邮件的内容。
在python shell中发送电子邮件的部分。还是没成功。
报错的内容和上面感觉很相似,但是特么的看不懂啊。

Traceback (most recent call last):
  File "<console>", line 2, in <module>
  File "D:\flasky\flasky\venv\lib\site-packages\flask_mail.py", line 415, in send
    with self.connect() as connection:
  File "D:\flasky\flasky\venv\lib\site-packages\flask_mail.py", line 123, in __enter__
    self.host = self.configure_host()
  File "D:\flasky\flasky\venv\lib\site-packages\flask_mail.py", line 137, in configure_host
    host = smtplib.SMTP(self.mail.server, self.mail.port)
  File "E:\python2.7.9\Lib\smtplib.py", line 256, in __init__
    (code, msg) = self.connect(host, port)
  File "E:\python2.7.9\Lib\smtplib.py", line 316, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "E:\python2.7.9\Lib\smtplib.py", line 291, in _get_socket
    return socket.create_connection((host, port), timeout)
  File "E:\python2.7.9\Lib\socket.py", line 571, in create_connection
    raise err
error: [Errno 10060]
>>>

3.一开始撸第六章的时候是能够成功发送邮件的,不过是9月份的事了,不知道和时间有木有关系。扣扣的SMTP服务我又关掉然后重新开启了一遍也还是不行。

4.一开始用官方代码没改成qq邮箱的时候也是报的一样的错,不知道啥情况啊。


phpstudy01phpstudy012019-08-20 16:53:47690 次浏览

全部回复(5)我要回复

  • 佳佳子

    佳佳子2019-08-22 20:14:54

    局域网无法访问,多站点只能访问一个站点怎么解决?

    回复
    0
  • 小安

    小安2019-08-21 10:05:52

    局域网无法访问,多站点只能访问一个站点怎么解决?

    回复
    1
  • phpsutdy-猪哥

    这个与环境 无关, 你在其它电脑里 host文件 里对应站点域名指向 装有环境 的机器 IP 就行了 了解 下域名解析原理 吧

    phpsutdy-猪哥 · 2019-09-04 11:30:10
  • yotwo¹³⁵ ⁶⁰⁴⁶ ⁰⁸⁹⁸

    yotwo¹³⁵ ⁶⁰⁴⁶ ⁰⁸⁹⁸2019-08-21 09:52:05

    我想问下,怎么在局域网内仿问不了这个服务器下的网站呢?

    会是软件问题还是电脑问题,电脑的局域网共享文件是可以仿问的。

    回复
    0
  • 尘の风

    尘の风2019-08-21 09:41:05

    支持一下,感谢phpstudy官方组的无私奉献

    回复
    0
  • 取消回复发送