【发布时间】:2020-05-20 18:24:09
【问题描述】:
我在 Outlook 'user1@example.com' 和 'user2@example.com' 上有两个帐户。我在 user1 草稿文件夹中有许多草稿,并希望在发送之前将每封电子邮件更新到 user2 地址,以便 user2 是电子邮件的发件人并出现在邮件项目的发件人字段中。
使用 exchangelib 我设法将“发件人”和“帐户”地址从 user1 更改为 user2(甚至 print(item.sender, item.account) 以验证更改),但更新并未反映 Outlook 字段中的电子邮件完成后草稿文件夹。
import getpass
from exchangelib import Configuration
from exchangelib import Credentials, Account
from exchangelib import FileAttachment, HTMLBody
from exchangelib.properties import DistinguishedFolderId
def authenticate():
"""
Authenticate into mail.example.com
"""
email = "user1@example.com"
passwd = getpass.getpass(prompt="Enter your password: ")
user_credentials = Credentials(email, passwd)
config = Configuration(server="mail.example.com",
credentials=user_credentials)
account = Account(primary_smtp_address=email, config=config,
credentials=user_credentials, autodiscover=False)
return account
def main():
"""
Change sender account to user2@example.com
"""
user_account = authenticate()
drafts = DistinguishedFolderId('drafts')
for item in user_account.drafts.all().order_by('subject'):
item.sender = 'user2@example.com'
item.account = 'user2@example.com'
user_account.drafts.save(update_fields=['sender', 'account'])
exit("Done")
if __name__ == "__main__":
main()
【问题讨论】:
标签: python python-3.x outlook exchangelib