openERP里的邮件处理主要有个2个模块处理
mail -核心
fetchmail -接收邮件
Alias domain和alias name
配置domain alias.
Settings/ configuration / general settings / email/ alias
注意,alias domain 最好和邮件的domain相同,这样免得需要另外配置DNS系统
配置user alias.
配置了alias domain之后,用户alias会自动生成
Alias name 默认为 login , 也可以进行修改
默认是 alias name @ alias domain --- 如果设置了alias. mail_from就用alias
可以修改alias为你所需要的,点击 alias值,,,
显示alias.
编辑它, 将alias改成你所需要的,然后保存
发信
只要配置SMTP服务器即可
Settings/ configuration / general settings / email/ configure the outgoing email servers
按键create
输入SMTP服务器信息
Note
重要信息
- Description
- SMTP server
- SMTP port
- Connection Security…. Important…
收信
- 收信可以用fetchmail模块处理 POP 、IMAP邮箱
- 也可以用 openerp_mailgate.py 脚本处理发送到 主机上的邮件
fetchmail模块收信
- 配置收信服务器
- 配置创建model record.
配置收信服务器
Settings/ configuration / general settings / email/ configure the outgoing email servers
按键create
fetchmail支持3种server type
- POP
- IMAP
- LOCAL SERVER ----即openerp_mailgate.py
POP类型 … POP会删除服务器上的邮件,慎用 !!!
第二部分,输入服务器信息和账号信息
第三部分,选择恰当的 new record. 和/或者 server action --具体见 '配置创建model record 和 server Action'
IMAP类型 … 与pop类型差不多
第二部分,输入服务器信息和账号信息
第三部分,选择恰当的 new record. 和/或者 server action --具体见 '配置创建model record 和 server Action'
LOCAL SERVER类型
------如果需要使用create New Record AND/OR server action时,才会用到此类型
选择本地类型时,使用MTA的alias转发机制接收邮件
具体做法
- 搭一个SMTP服务器,例如postfix
- 将SMTP服务发布出去
- 配置alias domain
- 修改DNS,为youdomain设置MX记录
- 配置 alias转发,使用 openerp_mailgate.py脚本将邮件插入到mail模块里
修改mail.cfg 增加
virtual_alias_maps = hash:/etc/postfix/virtual_aliases
修改/etc/postfix/virtual_aliases增加
@youdomain allow
@youdomain openerp_mailgate@localhost
将发送到@youdomain的邮件转发给 openerp_mailgate@localhost处理
修改/etc/aliases增加
openerp_mailgate: "|/path/to/openerp-mailgate.py --host=localhost -u 1 -p PASSWORD -d bioinformatics"
使用openerp_mailgate.py脚本将邮件交给mail.thread处理
制作hash文件
postmap /etc/postfix/virtual_aliases
newalias
Bug,,,,,,,
Jul 26 16:33:05 ubuntu postfix/local[2652]: 48DB746CF1: to=<openerp_mailgate@localhost>, orig_to=<admin@oe.bioerp.com>, relay=local, delay=0.95, delays=0.69/0/0/0.27, dsn=5.3.0, status=bounced (Command died with status 1: "/usr/bin/python /usr/lib/pymodules/python2.7/openerp/addons/mail/static/scripts/openerp_mailgate.py --host=127.0.0.1 -u 7 -p 4321 -d CRM_PLUS". Command output: Traceback (most recent call last): File "/usr/lib/pymodules/python2.7/openerp/addons/mail/static/scripts/openerp_mailgate.py", line 201, in <module> main() File "/usr/lib/pymodules/python2.7/openerp/addons/mail/static/scripts/openerp_mailgate.py", line 189, in main '%s' % (cgitb.text(sys.exc_info())), File "/usr/lib/python2.7/cgitb.py", line 245, in text exception = ['%s: %s' % (str(etype), str(evalue))] File "/usr/lib/python2.7/xmlrpclib.py", line 225, in __str__ return repr(self) UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-22: ordinal not in range(128) )
,,,,,,,,,,,,,,,
Fixed code
import sys
reload(sys)
sys.setdefaultencoding('utf8')
进阶部分
任何一种邮件接收方式,都可以设置特定的转发规则 AND/OR 服务器动作 ---服务器动作,参考另外一篇文章
配置创建model record 和 server Action
可以为接收进来的邮件指定模型 或者 触发服务器动作
如代码
高级选项
- Keep original是否保留原始邮件, 非保留服务器副本的含义
- Keep attachments是否保留附件
注意事项;
- 注意邮件loop
比如收到邮件时创建message. 但是在 partner上启用了 notification_email_send : comment
这样OE会向用户信箱(mail)发送邮件, 而该邮箱又设置了pop3下载; 造成loop.
- 如果需要在服务器保留邮件,选择IMAP访问
- POP访问会删除服务器上的邮件