Hướng dẫn python outlook email received date - ngày nhận email triển vọng python

Tôi đang cố gắng trích xuất một danh sách các ngày nhận được của tất cả các email trong một thư mục cụ thể trong hộp thư Outlook (với ý định lọc chúng cho các ngày cụ thể sau đó). Tôi là người mới bắt đầu hoàn toàn với Python và tôi đã xoay sở để tham gia vào thư mục con chính xác và có thể rút danh sách ra, tuy nhiên, danh sách được tạo thành từ cùng một ngày và thời gian nhận được nhiều lần - toàn bộ danh sách là một ngày độc thân. Tôi đã tăng gấp đôi đã kiểm tra điều này bằng cách kéo dòng chủ đề và nó chắc chắn chỉ rút ra từ một email và lặp lại nó trong suốt danh sách.

Làm thế nào để tôi có được danh sách bao gồm tất cả các ngày nhận được của tất cả các email trong thư mục thay vì chỉ một?

import win32com.client
import os 
from datetime import datetime, timedelta, date

outlook = win32com.client.Dispatch("Outlook.Application").GetNameSpace("MAPI")
mailbox = outlook.Folders.Item("$OutlookMailbox")
inbox = mailbox.Folders.Item("Inbox")
pega = inbox.Folders.Item("InboxSubfolder")

messages = InboxSubfolder.Items
message = messages.GetFirst()
subject  = message.subject
sender = message.sender
received_date = message.ReceivedTime

for message in messages:
    print(received_date)

'' '

Tôi đã thử: Tin nhắn.

  • GetFirst()
  • GetLast()
  • GetNext()
  • GetPrevious()

Và không có gì là thay đổi đầu ra.

Hướng dẫn python outlook email received date - ngày nhận email triển vọng python

hc_dev

6,9001 Huy hiệu vàng24 Huy hiệu bạc31 Huy hiệu đồng1 gold badge24 silver badges31 bronze badges

Hỏi ngày 14 tháng 9 năm 2021 lúc 16:36Sep 14, 2021 at 16:36

2

Vấn đề

Khi nào bạn xác định

messages = InboxSubfolder.Items
message = messages.GetFirst()
subject  = message.subject
sender = message.sender
received_date = message.ReceivedTime  # date of first message

for message in messages:
    print(received_date)
1?

Trong dòng dưới đây được đánh dấu bằng nhận xét. Dòng nằm ngoài vòng lặp và ngày là từ tin nhắn đầu tiên. Vì vậy, nó vẫn giữ nguyên trong vòng lặp - trừ khi bạn gán nó mới bên trong vòng lặp.

messages = InboxSubfolder.Items
message = messages.GetFirst()
subject  = message.subject
sender = message.sender
received_date = message.ReceivedTime  # date of first message

for message in messages:
    print(received_date)

Giải pháp tương tự

Bạn đã thử:

# Count all items in the sub-folder
item_count = InboxSubfolder.Items.Count

if item_count > 0:
    for i in range(item_count, 0, -1):
        message = InboxSubfolder.Items[i]
        print(message.received_date)  # received date from current message

Tôi đã tìm thấy nó trên Python Outlook - Loop thông qua các email Outlook trong thư mục - Pywin32 | Excelcise. Có một liên kết đến repo GitHub với ví dụ

messages = InboxSubfolder.Items
message = messages.GetFirst()
subject  = message.subject
sender = message.sender
received_date = message.ReceivedTime  # date of first message

for message in messages:
    print(received_date)
2.

Thay thế: Sử dụng các phương thức Iterator (messages = InboxSubfolder.Items message = messages.GetFirst() subject = message.subject sender = message.sender received_date = message.ReceivedTime # date of first message for message in messages: print(received_date) 3 và messages = InboxSubfolder.Items message = messages.GetFirst() subject = message.subject sender = message.sender received_date = message.ReceivedTime # date of first message for message in messages: print(received_date) 4)

Xem cách xem qua các email Outlook theo thứ tự ngược lại bằng cách sử dụng Python

message = messages.GetFirst()
while message:  # find a suitable exit-condition!
    message = messages.GetNext()

Đã trả lời ngày 14 tháng 9 năm 2021 lúc 17:30Sep 14, 2021 at 17:30

Hướng dẫn python outlook email received date - ngày nhận email triển vọng python

hc_devhc_devhc_dev

6,9001 Huy hiệu vàng24 Huy hiệu bạc31 Huy hiệu đồng1 gold badge24 silver badges31 bronze badges

Hướng dẫn python outlook email received date - ngày nhận email triển vọng python

Ngày 4 tháng 6 năm 2020febr

Luôn có những kịch bản mà bạn có thể tự hỏi làm thế nào để có một chương trình để tự động đọc email từ Outlook và thực hiện một số xử lý dựa trên các tiêu chí nhất định. Trường hợp sử dụng phổ biến nhất là bạn muốn tự động xử lý tệp đính kèm email khi nhận được một số báo cáo theo lịch trình. Trong bài viết này, tôi sẽ giải thích cho bạn cách sử dụng Python để đọc email từ Outlook và lưu tệp đính kèm vào thư mục được chỉ định.

Prerequisites:

Để có thể truy cập ứng dụng gốc Outlook, chúng tôi sẽ cần sử dụng thư viện PyWin32. Hãy chắc chắn rằng bạn đã cài đặt thư viện này và nhập vào tập lệnh của bạn.

import win32com.client
#other libraries to be used in this script
import os
from datetime import datetime, timedelta

Bắt đầu nào!

Giống như giao tiếp với hệ thống hoặc ứng dụng khác, bạn sẽ cần bắt đầu một phiên ngay từ đầu. Bằng cách gọi chức năng GetNamespace, bạn có thể nhận được phiên Outlook cho các hoạt động tiếp theo.

outlook = win32com.client.Dispatch('outlook.application')
mapi = outlook.GetNamespace("MAPI")

Nếu bạn đã cấu hình nhiều tài khoản trong triển vọng của mình, bạn cần chuyển tên tài khoản khi truy cập các thư mục của nó, chúng tôi có thể đề cập đến chủ đề này trong một bài viết khác. Đối với bài viết này, hãy giả sử chúng tôi chỉ có 1 tài khoản được cấu hình trong Outlook.

for account in mapi.Accounts:
	print(account.DeliveryStore.DisplayName)

Để truy cập thư mục Hộp thư đến, bạn sẽ cần chuyển trong loại thư mục - 6 trong hàm bên dưới. Bạn có thể tham khảo tài liệu này để hiểu danh sách đầy đủ các loại thư mục, chẳng hạn như dự thảo, hộp thư đến, đã gửi, thư mục các mục đã xóa, v.v.

inbox = mapi.GetDefaultFolder(6)

Điều gì sẽ xảy ra nếu email của bạn nằm trong một thư mục phụ trong hộp thư đến của bạn? GetDefaultFolder có thuộc tính các thư mục nơi bạn có thể truy cập vào thư mục phụ bằng tên của nó. Chẳng hạn, để truy cập vào các chương trình của Your_Sub_Folder, trong thư mục Hộp thư đến:Folders attribute where you can access to the sub folder by it’s name. For instance, to access the “your_sub_folder” under the inbox folder:

inbox = mapi.GetDefaultFolder(6).Folders["your_sub_folder"]

Đọc email từ Outlook

Bây giờ bạn có thể truy cập vào hộp thư đến và thư mục phụ của nó. Bạn có thể xem tất cả các tin nhắn bằng cách nhận các mục như dưới đây. Nhưng bạn có thể muốn lọc các tin nhắn theo các tiêu chí nhất định, chẳng hạn như ngày nhận, từ, chủ đề, v.v. Để làm điều đó, chúng tôi có thể áp dụng một số điều kiện lọc cho các tin nhắn.

Sử dụng chức năng hạn chế để lọc thông điệp email của bạn. Chẳng hạn, chúng tôi có thể lọc bằng cách nhận thời gian trong 24 giờ qua và người gửi email là một người khác với chủ đề như báo cáo mẫuRestrict function to filter your email message. For instance, we can filter by receiving time in past 24 hours, and email sender as “” with subject as “Sample Report”

received_dt = datetime.now() - timedelta(days=1)
received_dt = received_dt.strftime('%m/%d/%Y %H:%M %p')
messages = messages.Restrict("[ReceivedTime] >= '" + received_dt + "'")
messages = messages.Restrict("[SenderEmailAddress] = ''")
messages = messages.Restrict("[Subject] = 'Sample Report'")

Lưu tệp đính kèm

Với tất cả các bộ lọc trên, chúng tôi sẽ chỉ có các thông điệp mà chúng tôi quan tâm. Hãy để lặp lại thông báo và kiểm tra các chi tiết.

messages = InboxSubfolder.Items
message = messages.GetFirst()
subject  = message.subject
sender = message.sender
received_date = message.ReceivedTime  # date of first message

for message in messages:
    print(received_date)
0

Có các thuộc tính khác như cơ thể, kích thước, chủ đề, thời gian điều chỉnh thời gian, v.v., vui lòng kiểm tra tài liệu Microsoft này để biết thêm chi tiết.

Nếu vấn đề cụ thể mà bạn đang cố gắng giải quyết không được đề cập trong bài viết này, bạn có thể kiểm tra một bài đăng khác của tôi 5 mẹo để đọc email từ Outlook in Python. Và bạn cũng có thể quan tâm để xem cách gửi email từ Outlook in Python, vui lòng kiểm tra sau này.thisarticle.

Theo luôn luôn, chào mừng bất kỳ ý kiến ​​hoặc câu hỏi. Theo dõi tôi trên Twitter để cập nhật thêm.

Bài đăng TagsAutomationPyThonPywin32automationpythonpywin32

Bạn cũng có thể thích