鱼C论坛

 找回密码
 立即注册
查看: 2582|回复: 3

[已解决]如何 用python 读outlook的数据

[复制链接]
发表于 2020-2-17 12:07:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在公司主要是 用outlook来收发邮件(公司把账号密码绑定在outlook),想写一个程序控制outlook定期收发邮件。

各位同学有思路吗?谢谢
1. 如何进入outlook的数据库,outlook的电子邮件截图:
   

                               
登录/注册后可看大图


2. 如何读取相应的文件?

最佳答案
2020-2-17 17:09:57
python中有专门的邮件处理模块————email
https://docs.python.org/zh-cn/3/library/email.html --官方文档
你的邮箱要开启pop3/smtp服务

实例如下
  1. # 首先导入email模块构造邮件
  2. from email.mime.text import MIMEText
  3. # 构造邮件,内容为hello world
  4. msg = MIMEText('hello world')
  5. # 设置邮件主题
  6. msg["Subject"] = "hello world"
  7. # 寄件者
  8. msg["From"]    = ''
  9. # 收件者
  10. msg["To"]      = ''


  11. # 然后是导入smtplib模块发送邮件
  12. import smtplib
  13. from_addr = raw_input("请输入发送方邮箱账号:")
  14. password = raw_input("请输入发送方邮箱密码(这里输入的内容是开启pop3/smtp服务时的授权码):")
  15. # smtp服务器地址
  16. smtp_server = 'smtp.qq.com'
  17. # 收件人地址
  18. to_addr = raw_input("请输入收件人地址:")

  19. try:
  20.     # smtp协议的默认端口是25,QQ邮箱smtp服务器端口是465,第一个参数是smtp服务器地址,第二个参数是端口,第三个参数是超时设置,这里必须使用ssl证书,要不链接不上服务器
  21.     server = smtplib.SMTP_SSL(smtp_server, 465, timeout = 2)
  22.     # 登录邮箱
  23.     server.login(from_addr, password)
  24.     #发送邮件,第一个参数是发送方地址,第二个参数是接收方列表,列表中可以有多个接收方地址,表示发送给多个邮箱,msg.as_string()将MIMEText对象转化成文本
  25.     server.sendmail(from_addr, [to_addr], msg.as_string())
  26.     server.quit()
  27.     print 'success'
  28. except Exception,e:
  29.     print 'Faild:%s' % e
复制代码



                               
登录/注册后可看大图


希望能帮到您
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-17 17:09:57 | 显示全部楼层    本楼为最佳答案   
python中有专门的邮件处理模块————email
https://docs.python.org/zh-cn/3/library/email.html --官方文档
你的邮箱要开启pop3/smtp服务

实例如下
  1. # 首先导入email模块构造邮件
  2. from email.mime.text import MIMEText
  3. # 构造邮件,内容为hello world
  4. msg = MIMEText('hello world')
  5. # 设置邮件主题
  6. msg["Subject"] = "hello world"
  7. # 寄件者
  8. msg["From"]    = ''
  9. # 收件者
  10. msg["To"]      = ''


  11. # 然后是导入smtplib模块发送邮件
  12. import smtplib
  13. from_addr = raw_input("请输入发送方邮箱账号:")
  14. password = raw_input("请输入发送方邮箱密码(这里输入的内容是开启pop3/smtp服务时的授权码):")
  15. # smtp服务器地址
  16. smtp_server = 'smtp.qq.com'
  17. # 收件人地址
  18. to_addr = raw_input("请输入收件人地址:")

  19. try:
  20.     # smtp协议的默认端口是25,QQ邮箱smtp服务器端口是465,第一个参数是smtp服务器地址,第二个参数是端口,第三个参数是超时设置,这里必须使用ssl证书,要不链接不上服务器
  21.     server = smtplib.SMTP_SSL(smtp_server, 465, timeout = 2)
  22.     # 登录邮箱
  23.     server.login(from_addr, password)
  24.     #发送邮件,第一个参数是发送方地址,第二个参数是接收方列表,列表中可以有多个接收方地址,表示发送给多个邮箱,msg.as_string()将MIMEText对象转化成文本
  25.     server.sendmail(from_addr, [to_addr], msg.as_string())
  26.     server.quit()
  27.     print 'success'
  28. except Exception,e:
  29.     print 'Faild:%s' % e
复制代码



                               
登录/注册后可看大图


希望能帮到您
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-17 17:48:50 | 显示全部楼层
可以使用win32com这个库来调用outlook程序。
安装:pip install pywin32
具体操作参考这位大佬的:https://zhuanlan.zhihu.com/p/35521803
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 14:56:06 | 显示全部楼层
本帖最后由 stevenzhu 于 2020-2-18 14:57 编辑
dlnb526 发表于 2020-2-17 17:09
python中有专门的邮件处理模块————email
https://docs.python.org/zh-cn/3/library/email.html --官方 ...


已经可以发邮件,读邮件的基本信息,但又遇到一个问题:另存的时候说权限不足)
import win32com.client
# 问题1:不能把邮件的文件另存
# 还需要读邮件里面的内容
# 建立对象
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
# 收件箱文件夹对象 比如:sendbox = outlook.Folders("test@163.com").Folders("已发送邮件")
inbox = outlook.Folders("test@163.com").Folders("收件箱")
# 接收邮件,参数False代表不把收取进度显示出来,若要显示改为True即可
outlook.SendAndReceive(True)
# 获取收件箱文件夹里面的邮件对象(所有),获取第一封邮件    message = inbox.Items.GetFirst()
# 获取最后一封邮件  message = inbox.Items.GetLast()
messages = inbox.Items
lengh = len(messages)
print(lengh)
i = 0
for menssage in messages:
    try:
        sender = menssage.Sender
        receive = menssage.ReceivedTime
        sender_str = str(sender)
        if sender_str == "237710377":
            i = i+1
            messages.SaveAs(r"C:\Users\vistezhu\Desktop\邮件")
            print(sender,receive, i)
    except:
        pass
    # print(type(sender_str))
messages.SaveAs(r"C:\Users\vistezhu\Desktop\邮件")------------这里执行弹出错误:权限不足
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-3 00:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表