如何使用 BCC 向 Odoo 8 中的某些收件人发送邮件?
How to send a mail with BCC to some recipients in Odoo 8?
我已经创建了一个模块来向特定用户发送密件抄送。为此,我只继承了一些模型并修改了几行:
型号email.template
我已经添加了下一个字段:
email_bcc = fields.Char(string='Bcc',
help='Blind carbon copy message recipients')
并且我修改了以下方法:
generate_email_batch,修改如下行:
fields = ['subject', 'body_html', 'email_from', 'email_to', 'partner_to', 'email_cc', 'reply_to']
并把它变成下一个:
fields = ['subject', 'body_html', 'email_from', 'email_to', 'partner_to', 'email_cc', 'email_bcc', 'reply_to']
generate_recipients_batch,修改如下行:
mails = tools.email_split(values.pop('email_to', '')) + tools.email_split(values.pop('email_cc', ''))
并把它变成下一个:
mails = tools.email_split(values.pop('email_to', '')) + tools.email_split(values.pop('email_cc', '')) + tools.email_split(values.pop('email_bcc', ''))
型号mail.mail
我还添加了一个字段:
email_bcc = fields.Char(string='Bcc',
help='Blind carbon copy message recipients')
并修改了方法send
,修改这一行:
msg = ir_mail_server.build_email(
email_from=mail.email_from,
email_to=email.get('email_to'),
subject=email.get('subject'),
body=email.get('body'),
body_alternative=email.get('body_alternative'),
email_cc=tools.email_split(mail.email_cc),
reply_to=mail.reply_to,
attachments=attachments,
message_id=mail.message_id,
references=mail.references,
object_id=mail.res_id and ('%s-%s' % (mail.res_id, mail.model)),
subtype='html',
subtype_alternative='plain',
headers=headers
)
并把它变成下一个:
msg = ir_mail_server.build_email(
email_from=mail.email_from,
email_to=email.get('email_to'),
subject=email.get('subject'),
body=email.get('body'),
body_alternative=email.get('body_alternative'),
email_cc=tools.email_split(mail.email_cc),
email_bcc=tools.email_split(mail.email_bcc),
reply_to=mail.reply_to,
attachments=attachments,
message_id=mail.message_id,
references=mail.references,
object_id=mail.res_id and ('%s-%s' % (mail.res_id, mail.model)),
subtype='html',
subtype_alternative='plain',
headers=headers
)
在这两个模型中,我完全覆盖了方法(我无法找到使用 super 修改它们的方法)。
问题
我创建了一个电子邮件模板来检查 email_bcc
,我从代码中调用了 email.template
的方法 send_mail
:
mails_sent &= et_pool.send_mail(
self.env.cr, 1, template.id,
user.id, force_send=True, context=ctx
)
首先,发送邮件时,我在日志中收到此错误:
openerp.addons.email_template.email_template:无法使用值呈现模板 {'format_tz':在 0x7f170051a8c0>,'ctx':{'lang':'es_ES', 'tz': 'Europe/Madrid', 'search_default_my_sale_orders_filter': 1, 'params': {'action': 318}, 'uid': 1}, 'user': res.users(1,), 'object': res.users(2,)}
但是,邮件发送正常。但是总会有一些令人惊讶的事情发生,我举个例子让你更好地理解:
我的外发邮件服务器配置为从地址 sender@gmail.com 发送邮件。电子邮件模板在 email_to
字段中包含地址 to@gmail.com,地址 bcc@gmail.com 在 email_bcc
字段中。
发送完邮件后,如果我登录Google账户to@gmail.com,我会进入收件箱,我可以看到电子邮件,但我可以看到 sender@gmail.com 发送了电子邮件,它是发送给我的,and密件抄送至 bcc@gmail.com!
这怎么可能?看来我的模块运行良好,并在 BCC 中将电子邮件发送到 bcc@gmail.com,但为什么 to@gmail.com 所有者可以看到那个事实???
有人可以帮助我吗?
如果有人有兴趣查看模块,请看这里:
https://github.com/forvas/social/tree/8.0
它的名字是mail_bcc.
我最近遇到了同样的问题,我不认为这是模块的错误,而是 Google 的 SMTP 服务器(我假设你配置了一个是因为 @gmail.com 地址)。当我从GMail切换到我们公司的邮件服务器时,BCC字段处理得当,所以邮件发给了BCC收件人,但是TO和CC里的人看不到。
我已经创建了一个模块来向特定用户发送密件抄送。为此,我只继承了一些模型并修改了几行:
型号email.template
我已经添加了下一个字段:
email_bcc = fields.Char(string='Bcc',
help='Blind carbon copy message recipients')
并且我修改了以下方法:
generate_email_batch,修改如下行:
fields = ['subject', 'body_html', 'email_from', 'email_to', 'partner_to', 'email_cc', 'reply_to']
并把它变成下一个:
fields = ['subject', 'body_html', 'email_from', 'email_to', 'partner_to', 'email_cc', 'email_bcc', 'reply_to']
generate_recipients_batch,修改如下行:
mails = tools.email_split(values.pop('email_to', '')) + tools.email_split(values.pop('email_cc', ''))
并把它变成下一个:
mails = tools.email_split(values.pop('email_to', '')) + tools.email_split(values.pop('email_cc', '')) + tools.email_split(values.pop('email_bcc', ''))
型号mail.mail
我还添加了一个字段:
email_bcc = fields.Char(string='Bcc',
help='Blind carbon copy message recipients')
并修改了方法send
,修改这一行:
msg = ir_mail_server.build_email(
email_from=mail.email_from,
email_to=email.get('email_to'),
subject=email.get('subject'),
body=email.get('body'),
body_alternative=email.get('body_alternative'),
email_cc=tools.email_split(mail.email_cc),
reply_to=mail.reply_to,
attachments=attachments,
message_id=mail.message_id,
references=mail.references,
object_id=mail.res_id and ('%s-%s' % (mail.res_id, mail.model)),
subtype='html',
subtype_alternative='plain',
headers=headers
)
并把它变成下一个:
msg = ir_mail_server.build_email(
email_from=mail.email_from,
email_to=email.get('email_to'),
subject=email.get('subject'),
body=email.get('body'),
body_alternative=email.get('body_alternative'),
email_cc=tools.email_split(mail.email_cc),
email_bcc=tools.email_split(mail.email_bcc),
reply_to=mail.reply_to,
attachments=attachments,
message_id=mail.message_id,
references=mail.references,
object_id=mail.res_id and ('%s-%s' % (mail.res_id, mail.model)),
subtype='html',
subtype_alternative='plain',
headers=headers
)
在这两个模型中,我完全覆盖了方法(我无法找到使用 super 修改它们的方法)。
问题
我创建了一个电子邮件模板来检查 email_bcc
,我从代码中调用了 email.template
的方法 send_mail
:
mails_sent &= et_pool.send_mail(
self.env.cr, 1, template.id,
user.id, force_send=True, context=ctx
)
首先,发送邮件时,我在日志中收到此错误:
openerp.addons.email_template.email_template:无法使用值呈现模板 {'format_tz':在 0x7f170051a8c0>,'ctx':{'lang':'es_ES', 'tz': 'Europe/Madrid', 'search_default_my_sale_orders_filter': 1, 'params': {'action': 318}, 'uid': 1}, 'user': res.users(1,), 'object': res.users(2,)}
但是,邮件发送正常。但是总会有一些令人惊讶的事情发生,我举个例子让你更好地理解:
我的外发邮件服务器配置为从地址 sender@gmail.com 发送邮件。电子邮件模板在 email_to
字段中包含地址 to@gmail.com,地址 bcc@gmail.com 在 email_bcc
字段中。
发送完邮件后,如果我登录Google账户to@gmail.com,我会进入收件箱,我可以看到电子邮件,但我可以看到 sender@gmail.com 发送了电子邮件,它是发送给我的,and密件抄送至 bcc@gmail.com!
这怎么可能?看来我的模块运行良好,并在 BCC 中将电子邮件发送到 bcc@gmail.com,但为什么 to@gmail.com 所有者可以看到那个事实???
有人可以帮助我吗?
如果有人有兴趣查看模块,请看这里:
https://github.com/forvas/social/tree/8.0
它的名字是mail_bcc.
我最近遇到了同样的问题,我不认为这是模块的错误,而是 Google 的 SMTP 服务器(我假设你配置了一个是因为 @gmail.com 地址)。当我从GMail切换到我们公司的邮件服务器时,BCC字段处理得当,所以邮件发给了BCC收件人,但是TO和CC里的人看不到。