ImportError:DLL加载失败:导入win32com时%1不是有效的Win32应用程序

时间:2017-10-09 07:09:16

标签: python win32com

我尝试了这封电子邮件发送sample code

org.apache.spark.sql.AnalysisException: cannot resolve 'explode(`value`)' due to data type mismatch: input to function explode should be array or map type, not StringType

但在命令提示符下运行代码时仍然遇到以下错误:

# -*- coding: utf-8 -*-
"""
Created on Wed Sep 21 15:36:00 2016

@author: Deepesh.Singh
"""

import win32com.client as win32
import psutil
import os
import subprocess

# Drafting and sending email notification to senders. You can add other senders' email in the list
def send_notification():
    outlook = win32.Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.To = 'abc@xzs.com; bhm@ert.com', 
    mail.Subject = 'Sent through Python'
    mail.body = 'This email alert is auto generated. Please do not respond.'
    mail.send

# Open Outlook.exe. Path may vary according to system config
# Please check the path to .exe file and update below

def open_outlook():
    try:
        subprocess.call(['C:\Program Files\Microsoft Office\Office15\Outlook.exe'])
        os.system("C:\Program Files\Microsoft Office\Office15\Outlook.exe");
    except:
        print("Outlook didn't open successfully")

# Checking if outlook is already opened. If not, open Outlook.exe and send email
for item in psutil.pids():
    p = psutil.Process(item)
    if p.name() == "OUTLOOK.EXE":
        flag = 1
        break
    else:
        flag = 0

if (flag == 1):
    send_notification()
else:
    open_outlook()
    send_notification()

有人可以指导我如何解决此错误吗?或者他们是更好的方法吗?

感谢。

3 个答案:

答案 0 :(得分:1)

这可能是x86 vs x64问题。如果使用64位python,导入64位dll,如果使用32位python,则导入32位dll。

EDIT2: 我认为this正是您所寻找的。有关详细信息,请参阅this

答案 1 :(得分:0)

您安装了Win32吗? Python的扩展?使 确定你选择了正确的 系统安装程序和 否则就是Python的版本 可能无法正常工作。

答案 2 :(得分:0)

我按照Trapli的指示重新安装了pywin32(32位版本),并且还安装了psutil模块并重新启动了我的系统。问题现已解决,我可以发送电子邮件。 谢谢大家帮帮我。