从Outlook发送电子邮件与Python不工作

czq61nw1  于 2023-01-14  发布在  Python
关注(0)|答案(2)|浏览(252)

我一直在运行一些代码有一段时间,它自动化一些电子邮件使用win32comiderclient。所有已经工作了几个月,但今天我得到一个错误。

import win32com.client

olMailItem = 0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)

今天我得到错误AttributeError: module 'win32com.gen_py.00062FFF-0000-0000-C000-000000000046x0x9x6' has no attribute 'CLSIDToPackageMap'
如果我尝试"Excel. Application"或"Word. Application",那么我不会得到错误,Outlook已安装,并在我的系统上工作。上周我遇到的问题,其中mail.bcc和mail.HTMLbody分别更改为mail.bcc和mail.HTMLBody,但我没有发现字符串中的更改有帮助。
有人能解释一下可能发生的事情吗?
先谢了。

jm81lzqq

jm81lzqq1#

您可能需要删除一些旧文件:

# If errors are found, do this
# clear contents of C:\Users\<username>\AppData\Local\Temp\gen_py
# that should fix it, to test it type
import win32com.client
app = win32com.client.gencache.EnsureDispatch("Outlook.Application")
app.Visible = True

This gist也有其他自动删除文件的解决方案。应用程序需要调整。
(一)

from pathlib import Path
 try:
        xl = win32.gencache.EnsureDispatch('Excel.Application')
    except AttributeError:
        f_loc = r'C:\Users\<username>\AppData\Local\Temp\gen_py'
        for f in Path(f_loc):
            Path.unlink(f)
        Path.rmdir(f_loc)
        xl = win32.gencache.EnsureDispatch('Excel.Application')

(二)

try:
    xl = client.gencache.EnsureDispatch('Excel.Application')
except AttributeError:
    # Corner case dependencies.
    import os
    import re
    import sys
    import shutil
    # Remove cache and try again.
    MODULE_LIST = [m.__name__ for m in sys.modules.values()]
    for module in MODULE_LIST:
        if re.match(r'win32com\.gen_py\..+', module):
            del sys.modules[module]
    shutil.rmtree(os.path.join(os.environ.get('LOCALAPPDATA'), 'Temp', 'gen_py'))
    from win32com import client
    xl = client.gencache.EnsureDispatch('Excel.Application')
ddhy6vgd

ddhy6vgd2#

我遇到了同样的问题,并设法通过执行以下操作解决了它

from win32com.client import gencache.py
gencache._Dump()

_Dump()命令将打印该高速缓存目录的位置。删除目录为我解决了这个问题。

相关问题