win32com未发送附件

2 投票
2 回答
9152 浏览
提问于 2025-04-18 13:18

这是我第一次提问,希望没问题。

我正在尝试用Python通过win32com发送带附件的邮件,使用的是Outlook 2010。邮件可以发送,但附件却没有发送。我是根据这里的一个例子写的代码。

def email_tamplate(*args):
  Format = { 'UNSPECIFIED' : 0, 'PLAIN' : 1, 'HTML' : 2, 'RTF'  : 3}
  profile = "Outlook"
  #session = win32com.client.Dispatch("Mapi.Session")
  outlook = win32com.client.Dispatch("Outlook.Application")
  #session.Logon(profile)
  mainMsg = outlook.CreateItem(0)
  mainMsg.To = str(login_entry.get())+"@amazon.com"
  mainMsg.Subject = "Sauron personal report request between "+str(start_date.get())+" and "+str(end_date.get())
  mainMsg.BodyFormat = Format['RTF']
  mainMsg.HTMLBody = body

  try:
    attachment1= ('C:\\Users\\' + str(login_entry.get()) + '\\My Documents\\status_email.csv')
    mainMsg.Attachments.Add(attachment1)
  except:
    pass                                   

  mainMsg.Send()

这是我在没有使用Try/except时收到的错误信息:

在Tkinter回调中出现异常 回溯(最近的调用最后): 文件 "C:\Python33\lib\tkinter__init__.py",第1475行,在 call 返回 self.func(*args) 文件 "C:\Users\alvaros\Dev\Sauron\v2\Sauron v2.2.1.py",第478行,在 status_email email_tamplate() 文件 "C:\Users\alvaros\Dev\Sauron\v2\Sauron v2.2.1.py",第424行,在 email_tamplate mainMsg.Attachments.Add(attachment1) 文件 ">",第3行,在 Add pywintypes.com_error: (-2147352567, '发生异常。', (4096, 'Microsoft Outlook', "您没有执行此操作的适当权限。", None, 0, -2147024891), None)

除了附件没有发送,其他都正常。附件的路径是正确的,文件也在那儿。

谢谢。

2 个回答

0

这个问题已经解决了。 谢谢你的帮助。 可能是缩进的问题,因为它基本上是自己解决的。

1

你可能需要以管理员身份运行这个程序,如果这样还不行的话,你可能需要使用“扩展MAPI”来让它正常工作:

另一方面,这个讨论提到了编辑PST文件本身的属性,或者在Windows注册表中编辑它的属性:

撰写回答