首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向子组/超级组发送电子邮件-嵌套字典?

向子组/超级组发送电子邮件-嵌套字典?
EN

Stack Overflow用户
提问于 2018-03-14 21:33:17
回答 1查看 34关注 0票数 0

我有有以下记录的文件。这表示组“名称:电子邮件添加”

代码语言:javascript
复制
Group1: it@group.foobar.com, Group1: it@group.foobar.com  
Group2: man@foobar.com, Group2: man@foobar.com  
Group3: xyz@foobar.com, test-grp: yz@foobar.com, grp-t: new@foobar.com, test-contract: new_g@foobar.com, grp0: ij@foobar.com, grp8: turu@foobar.com  
Group_test: iu@foobar.com, gvgrp: in@foobar.com, rsgrp: ij@foobar.com, dev: mp@foobar.com, rs: uru@foobar.com  

假设第一个字段:email是supergrpup,其他是嵌套组,这意味着

次组:

代码语言:javascript
复制
Group1: it@group.foobar.com  
Group2: man@foobar.com   
Group3: xyz@foobar.com  
Group_test: iu@foobar.com  

分组:

代码语言:javascript
复制
Group1: it@group.foobar.com 
Group2: man@foobar.com
test-grp: yz@foobar.com, grp-t: new@foobar.com, test-contract: new_g@foobar.com, grp0: ij@foobar.com, grp8: turu@foobar.com 
gvgrp: in@foobar.com, rsgrp: ij@foobar.com, dev: mp@foobar.com, rs: uru@foobar.com

现在,我想发送电子邮件给这些组地址(用“:”分隔)

但是电子邮件应该发送给超级组及其相应的子组。

就像行:

代码语言:javascript
复制
  Group3: xyz@foobar.com, test-grp: yz@foobar.com, grp-t: new@foobar.com, test-contract: new_g@foobar.com, grp0: ij@foobar.com, grp8: turu@foobar.com 

它应该将电子邮件发送到超级组电子邮件和所有子组的电子邮件地址,并在电子邮件正文中使用他们的群名。

代码语言:javascript
复制
To: xyz@foobar.com, yz@foobar.com, new@foobar.com, new_g@foobar.com, 
ij@foobar.com,  turu@foobar.com 

Body:
Failed because of groupnames :  Group3, test-grp, grp-t, test-contract, 
grp0, grp8 ---------> These are all  group associated with email specified 
in "To":

我不知道我该怎么做?我试着写字典,但又一次不管用.

如果有人能帮我个忙,那会有很大的帮助吗?

非常感谢鲍勃

EN

回答 1

Stack Overflow用户

发布于 2018-03-14 21:56:10

可以使用regex和group解析字符串以创建嵌套字典列表:

代码语言:javascript
复制
import re
s = """
Group1: it@group.foobar.com, Group1: it@group.foobar.com  
Group2: man@foobar.com, Group2: man@foobar.com  
Group3: xyz@foobar.com, test-grp: yz@foobar.com, grp-t: new@foobar.com, test-contract: new_g@foobar.com, grp0: ij@foobar.com, grp8: turu@foobar.com  
Group_test: iu@foobar.com, gvgrp: in@foobar.com, rsgrp: ij@foobar.com, dev: mp@foobar.com, rs: uru@foobar.com
"""
listings = [re.findall('[a-zA-Z0-9\-\_]+(?=:\s)|(?<=:\s)[a-zA-Z0-9@\._]+', i) for i in filter(None, s.split('\n'))]
new_groups = [{**{i[0]:i[1]}, **{'subgroups':dict([(i[2:][b], i[2:][b+1]) for b in range(0, len(i)-2, 2)])}} for i in listings]
def get_flattened_listing(d):
   return [i for b in [[b] if not isinstance(b, dict) else get_flattened_listing(b) for a, b in d.items()] for i in b]

def send_email(structure, body='Testing new system'):
   yield from ['To: {}\n\nBody: {}'.format(', '.join(get_flattened_listing(i)), body) for i in structure]

for message in send_email(new_groups):
  print(message)
  print('-'*10)

输出:

代码语言:javascript
复制
To: it@group.foobar.com, it@group.foobar.com

Body: Testing new system
----------
To: man@foobar.com, man@foobar.com

Body: Testing new system
----------
To: xyz@foobar.com, yz@foobar.com, new@foobar.com, new_g@foobar.com, ij@foobar.com, turu@foobar.com

Body: Testing new system
----------
To: iu@foobar.com, in@foobar.com, ij@foobar.com, mp@foobar.com, uru@foobar.com

Body: Testing new system
----------
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49287971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档