excel发邮件问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel发邮件问题相关的知识,希望对你有一定的参考价值。

我的电脑是windows7系统的每次写完邮件的时候都想直接从excel发送。我用的是foxmial邮件。但是不知道怎么设置。
一打开这个用电子邮件发送的选项,就变成outlook了。

1.启动Excel,打开一个表格(例如:XXXX年XXX公司各区域销售情况)。

2.点击标题行,单击菜单栏“数据”—>“筛选”—>“自动筛选”。

3.现在可以筛选内容了,比如筛选“销售区”中的“华东区”。

4.用鼠标将筛选后的表格选中。

5.如果选定区域没有隐藏的数据,就可以直接点击“发送邮件”来发送邮件了。如果有选定区域有隐藏的数据,还是建议将其复制到另一工作表中,这时候隐藏的数据就没有了(也可以不复制新工作表中,但正式发送时,会有如下提示,)。

6.选定要发送的区域后后,点击“发送邮件”图标。

7.填写好“收件人”、“主题”、“说明”、“附件”等信息,选定要发送的区域后,最后单击“发送所选范围”。

8.这里收件人会收到如下邮件。
参考技术A 修改默认发送邮件的程序。追问

怎么才能修改啊?

追答

Win8 控制面板里有个 默认程序

如果是xp的话,在添加删除程序 里有个相同的功能

追问

不知道是不是这个,但是不知道怎么改

本回答被提问者采纳
参考技术B 是想发送excel文件吗追问

是的但是点击邮件发送的时候,却变成outlook了。发不了。邮件、

追答

对 修改默认发送邮件 的 程序

Python自动化办公之Excel拆分并自动发邮件


今天我们来分享一个真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍!

需求

需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,然后将该文件通过电子邮件发送给正确的用户

需求解析


大致的流程就是上图,先拆分 Excel 数据,提取出对应的邮件地址和用户的数据信息,再自动添加到邮件的附件当中

代码实现

首先我们先来看下我们手中 Excel 的数据形式是怎么样的

import datetime
import os
import shutil
from pathlib import Path
import pandas as pd


src_file = Path.cwd() / 'data' / 'Example4.xlsx'
df = pd.read_excel(src_file)
df.head()


可以看出,CUSTOMER_ID 就是那个唯一的用户 ID,下面我们以该字段来分组,得到如下数据

customer_group = df.groupby('CUSTOMER_ID')
for ID, group_df in customer_group:
    print(ID)
>>>Output>>>
A1000
A1001
A1002
A1005
...

我们再来看下用户 A1005 所对应的数据形式


接下来我们就为每一个用户创建一个 Excel,后面就可以作为附件使用

attachment_path = Path.cwd() / 'data' / 'attachments'
today_string = datetime.datetime.today().strftime('%m%d%Y_%I%p')
attachments = []
for ID, group_df in customer_group:
    attachment = attachment_path / f'ID_today_string.xlsx'
    group_df.to_excel(attachment, index=False)
    attachments.append((ID, str(attachment)))

我们来看下变量 attachments 所包含的数据吧

[('A1000',
'c:\\\\Users\\\\luobo\\\\notebooks\\\\2020-10\\\\data\\\\attachments\\\\A1000_01162021_12PM.xlsx'),
('A1001',
'c:\\\\Users\\\\luobo\\\\notebooks\\\\2020-10\\\\data\\\\attachments\\\\A1001_01162021_12PM.xlsx'),
('A1002',
'c:\\\\Users\\\\luobo\\\\notebooks\\\\2020-10\\\\data\\\\attachments\\\\A1002_01162021_12PM.xlsx'),
('A1005',
'c:\\\\Users\\\\luobo\\\\notebooks\\\\2020-10\\\\data\\\\attachments\\\\A1005_01162021_12PM.xlsx')]

最后我们可以通过将 DataFrame 合并在一起来生成带有电子邮件地址的文件列表

email_merge = pd.merge(df, df2, how='left')
combined = email_merge[['CUSTOMER_ID', 'EMAIL', 'FILE']].drop_duplicates()

得到的 DataFrame 如下


我们已经收集了客户名单、他们的电子邮件和附件,现在我们就可以用 Outlook 发送一封电子邮件了

import win32com.client as win32

today_string2 = datetime.datetime.today().strftime('%b %d, %Y')

class EmailsSender:
    def __init__(self):
        self.outlook = win32.Dispatch('outlook.application')

    def send_email(self, to_email_address, attachment_path):
        mail = self.outlook.CreateItem(0)
        mail.To = to_email_address
        mail.Subject = today_string2 + ' Report'
        mail.Body = """Please find today's report attached."""
        mail.Attachments.Add(Source=attachment_path)
        # Use this to show the email
        #mail.Display(True)
        # Uncomment to send
        #mail.Send()

通过上面这个简单的类,我们可以生成电子邮件并附加 Excel 文件

同时我们还注意到,这里使用了 win32,关于这个库的具体使用,我们在下次的文章中再具体说明吧

email_sender = EmailsSender()
for index, row in combined.iterrows():
    email_sender.send_email(row['EMAIL'], row['FILE'])


最后,我们再把所有生成的 Excel 存档,以备后面审查、比对等

archive_dir = Path.cwd() / 'archive'

for f in attachments:
    shutil.move(f[1], archive_dir)

至此,我们的编码结束,整体来看还是比较简单的

推荐阅读:

睡在我上铺的室友用python,一个月挣了我一学期的生活费

以上是关于excel发邮件问题的主要内容,如果未能解决你的问题,请参考以下文章

如何用outlook 与excel 发邮件

杂项收集,包括-发邮件二维码生成文件下载压缩导出excel

sap abap如何生成Excel,但Excel有多个sheet,然后并将Excel压缩打包后 发邮件

如何用ABAP代码实现上传本地excel文件,并将其作为附件发邮件

EXCEL VBA 自动发送邮件功能异常

Python自动化办公之Excel拆分并自动发邮件