怎么用代码在邮件里面实现 View it in your browser(在浏览器中打开)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用代码在邮件里面实现 View it in your browser(在浏览器中打开)?相关的知识,希望对你有一定的参考价值。
如题,我们在使用邮件模板的时候,角落里面往往会有这样一句话,Email not displaying correctly?View it in your browser. 而view it in your browser就是超链接到外面的客户端的本地浏览器,这代码怎么实现?
参考技术A 建议更换360浏览器试试,相对来说安全性能比较高,功能也比较齐全。pythonWeb框架flask中使用blinker信号机制解耦业务代码解决ImportError: cannot import name 'app',以异步发送邮件为例
百度了大半天,不知道怎么搞,直到学习了blinker才想到解决办法,因为之前写java都是文件分开的,
所以发送邮件业务代码也放到view里面,但是异步线程需要使用app,蛋疼的是其他模块不能从app.py导入任何变量:
即:
app.py是主文件,view.py是业务文件, 我需要在view中使用app中的变量,怎么办,百度了很多,没有找到方法
这里可以用信号实现,先记录一下:
python3内置了blinker,可以直接使用,首先在view里定义信号:
然后在app.py里面连接需要使用的函数(这个函数需要使用app,所以只能写在appp.py里),app是可以导入其他模块的变量的:
# Flask-Mail 中的 send() 函数使用 current_app ,因此必须激活程序上下文。 # 不过,在不同线程中执行 mail.send() 函数时,程序上下文要使用 app.app_context() 人工创建 def send_async_email(msg): print("---开始发送---") with app.app_context(): mail.send(msg) # 导入view 的信号量,并连接异步发送函数 signal.connect(send_async_email)
最后view使用信号调用app的函数:
@user.route(‘/sendsync/‘) def send_sync_mail(): msg = Message(subject="Hello World!", sender="[email protected]", recipients=["[email protected]"]) msg.body = "测试异步发送" msg.html = "<h2>测试异步发送</h2>" thr = Thread(target=signal.send, args=[msg,]) thr.start() return "ok"
最后测试成功:
这里还可以使用sender只接受指定参数,比如:
只有当参数是2时候,才会进入round_two方法
以上是关于怎么用代码在邮件里面实现 View it in your browser(在浏览器中打开)?的主要内容,如果未能解决你的问题,请参考以下文章
android编程如何在View的onTouch方法里面动态的画图