Commit 817b2704 authored by Yusei Tahara's avatar Yusei Tahara

2008-4-1 yusei

* When receive forwarded mail, update recipient and sender automatically.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@20252 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 867d4fd1
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
getResultValue = context.portal_catalog.getResultValue\n
\n
result = []\n
for recipient in text.split(\',\'):\n
if "<" in recipient:\n
recipient = recipient[recipient.find(\'<\') + 1:]\n
recipient = recipient[:recipient.find(\'>\')]\n
if recipient:\n
email = getResultValue(url_string=recipient, portal_type="Email")\n
if email is not None:\n
result.append(email.getParentValue())\n
return result\n
]]></string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>text</string>
<string>_getattr_</string>
<string>context</string>
<string>getResultValue</string>
<string>result</string>
<string>_getiter_</string>
<string>recipient</string>
<string>_getitem_</string>
<string>email</string>
<string>None</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Base_getPersonListFromFromHeader</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -71,6 +71,38 @@
are marked as \'New\' and appear in the worklist.\n
"""\n
context.receive()\n
\n
# Forwarded mail\n
forwarded_mail = False\n
subject = context.getContentInformation().get(\'Subject\')\n
forwarded_mark_list = (\'Fwd\', \'Fw\', \'Tr\',)\n
if subject is not None and \':\' in subject:\n
if subject[0]==\'[\':# some email client enclose subject with \'[]\'\n
subject = subject[1:]\n
for mark in forwarded_mark_list:\n
if subject.startswith(mark+\':\'):\n
forwarded_mail = True\n
break\n
if forwarded_mail is True:\n
# find original recipient\n
source = context.getSource()\n
if source is not None:\n
context.setDestination(source)\n
\n
# find original sender\n
body = context.getTextContent()\n
from_header = \'From: \'\n
from_header_length = len(from_header)\n
Base_getPersonListFromFromHeader = context.Base_getPersonListFromFromHeader\n
line = \'\'\n
for line in body.split(\'\\n\'):\n
if line.startswith(from_header):\n
break\n
if line:\n
from_text = line[from_header_length:]\n
person_list = Base_getPersonListFromFromHeader(from_text)\n
if person_list:\n
context.setSource(person_list[0].getRelativeUrl())\n
</string> </value>
</item>
<item>
......@@ -120,7 +152,25 @@ context.receive()\n
<value>
<tuple>
<string>_getattr_</string>
<string>context</string>
<string>context</string>
<string>False</string>
<string>forwarded_mail</string>
<string>subject</string>
<string>forwarded_mark_list</string>
<string>None</string>
<string>_getitem_</string>
<string>_getiter_</string>
<string>mark</string>
<string>True</string>
<string>source</string>
<string>body</string>
<string>from_header</string>
<string>len</string>
<string>from_header_length</string>
<string>Base_getPersonListFromFromHeader</string>
<string>line</string>
<string>from_text</string>
<string>person_list</string>
</tuple>
</value>
</item>
......
......@@ -65,9 +65,7 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
"""\n
<value> <string>"""\n
This script is called during the metadata discovery process\n
for each event which has been ingested through the email interface\n
by portal contributions. It tries to analyse the text content \n
......@@ -82,18 +80,10 @@
"""\n
\n
getResultValue = context.getPortalObject().portal_catalog.getResultValue\n
\n
def getPersonList(information_text):\n
result = []\n
for recipient in information_text.split(\',\'):\n
if "<" in recipient:\n
recipient = recipient[recipient.find(\'<\') + 1:]\n
recipient = recipient[:recipient.find(\'>\')]\n
if recipient:\n
email = getResultValue(url_string=recipient, portal_type="Email")\n
if email is not None:\n
result.append(email.getParentValue().getRelativeUrl())\n
return result\n
Base_getPersonListFromFromHeader = context.Base_getPersonListFromFromHeader\n
def getPersonList(text):\n
return [person.getRelativeUrl()\n
for person in Base_getPersonListFromFromHeader(text)]\n
\n
content_information = context.getContentInformation()\n
sender_list = getPersonList(content_information.get(\'From\', \'\'))\n
......@@ -138,9 +128,7 @@ if portal_type is not None:\n
result[\'portal_type\'] = portal_type\n
\n
return result\n
]]></string> </value>
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
......@@ -191,6 +179,7 @@ return result\n
<string>_getattr_</string>
<string>context</string>
<string>getResultValue</string>
<string>Base_getPersonListFromFromHeader</string>
<string>getPersonList</string>
<string>content_information</string>
<string>sender_list</string>
......
2008-4-1 yusei
* When receive forwarded mail, update recipient and sender automatically.
2008-03-31 yusei
* Add a type based method for rewriting mail message.
......
212
\ No newline at end of file
218
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment