我使用以下Python片段通过SMTP发送大量类似的电子邮件:
def send(from_, to, body):
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.ehlo()
server.login('michael@gmail.com', password)
msg = '''\
From: %s
To: %s
Subject: %s
%s''' % (from_, to.encode('utf-8'), "Hello", body.encode('utf-8'))
server.sendmail(from_, to, msg)
server.quit()
Run Code Online (Sandbox Code Playgroud)
这些消息是对话中的第一条消息.Strangley,对这些消息的回复没有被线程化到原始消息的对话上.
回复在我的收件箱中作为单独的邮件返回,主题="Re:Hello",与原始邮件无关.(很偶然一个将被适当螺纹的,这甚至怪异.)
我已经验证这些(非线程)回复有一个References:字段,该字段引用已发送邮件的Message-ID字段,该字段由GMail自动生成.
知道我做错了什么吗?
问题,简而言之:
在MVC中,如何区分复选框单击(或选择框或列表框更改)与人类意义"控制器,修改模型"以及从控制器单击(或选择框或列表框更改)意味着"我"更新视图,因为模型已更改"?
这个例子:
我有一个JS应用程序(所有一个大的HTML + JS页面;它背后有一个服务器,并且AJAX正在进行,但对于该示例并不重要),其中"顶点"的概念由"边缘"连接.UI允许您在地图上添加和删除顶点,以及启用或禁用顶点对之间的边.
有两种方法可以禁用从顶点A到顶点B的边:
以下是它在MVC中的工作原理(但请参阅本文末尾的更新,我在其中理解了我的理解中的问题):
这是具体的不雅:
因此,不必要的重新更新模型,并重新更新View.在一个更复杂的视图中,事件会触发触发事件的事件,这可能会导致数十个无关的更新!
我误解了MVC.我没有一个View,如上所述:我有几个模型的几个视图.特别是,我有一个特定节点的复选框列表边缘视图,以及一个独立的"详细窗口式"边缘视图.
此外,我不应该在模型更改时更新所有视图的一个控制器功能:每个视图应在模型更改时自行修改.
因此,如果每个View在Model上注册"状态更新"事件,并且每个View在收到这些事件后自行更新,那么我的循环事件问题的答案就是:
复选框列表视图将禁用复选框事件,以便在模型状态更改后更新复选框.
现在,如果用户通过"边缘详细信息"窗口禁用边缘,则控制器会更新边缘模型,复选框列表视图会收到更新通知,复选框列表视图足够智能,可以在更改状态时隐藏复选框事件.适当的复选框
这比我原来的解决方案更加可口,其中一个Controller更新所有视图 - 因此必须知道哪些视图需要特别小心和提供以避免循环.相反,只有具有麻烦的UI元素的单个View必须处理该问题.
感谢那些回答我问题的人!
javascript model-view-controller design-patterns event-handling
当我在vim中折叠Python代码时,折叠文本总是从第0列开始.这在视觉上很嘈杂,因为Python有很大的空白 - 当我浏览文件时它看起来像顶级代码.
是否有设置告诉foldtext将自己缩进到折叠的第一行代码的级别,而不是重写foldtext()方法?
Humble Frozenbyte Bundle最近结束了.在此之前,如果您尝试通过单击Paypal按钮来支付捆绑包,则会出现一个小弹出窗口,要求您登录PayPal,要求您单击"是这是正确的支付金额",然后弹出窗口再次关闭.优秀!
我想对我的应用程序做同样的事情,但我无法弄清楚使用正确的Paypal流程.标准cmd = _xclick WPS结帐流程占据了整个屏幕,所以我知道这不是Humble Bundle在弹出窗口中放入的内容......
要清楚,我不是在问如何在HTML中创建一个弹出窗口.我问如何访问一个可以放在一个小弹出窗口中的PayPal结账流程,如果我没记错的话,大约400x800.如果Humble Bundle仍然打开,我当然只看源代码!
提前感谢任何提示!
更新:PayPal数字商品正是我所寻找的.
(不是很好的)Paypal集成指南在这里:https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_ExpressCheckout_IntegrationGuide_DG.pdf
我正在关注试图让这个工作的博客文章在这里:https://www.x.com/blogs/matt/2011/02/15/another-digital-goods-demo
我还没有完成它的工作,但它让我很接近.
ElixirKernel.put_in非常适合添加或更新嵌套结构深处的值。但是,它不支持删除该值,而且我在delete_in任何地方都没有看到。
delete_in、pop_in、 或类似的东西存在吗?就像是
def delete_in(data, keys) do
put_in(data, keys, :magic_value_that_deletes_the_final_key)
end
Run Code Online (Sandbox Code Playgroud)
如果没有它,添加和更新函数看起来就像不错的管道,但删除或弹出函数看起来不太整洁。