将发送邮件的python代码用py2exe编译成exe文件遇到问题的解决方法
问题描述:
以下代码为发送邮件的python源码,源码执行ok,但当用py2exe编译成exe文件后,执行,报错如下:
![](http://static.oschina.net/uploads/space/2012/0910/153920_ZT7X_78338.jpg)
解决方法:
![](http://static.oschina.net/uploads/space/2012/0910/154223_oXP6_78338.jpg)
注意:要在dos命令行下执行生成后的exe文件,这样会显示报错信息!!
问题延伸:
一些模块如email的__init__.py 为了确保和一些早期版本的兼容,它不能够自动处理包加载,因此需要手动加载。
以下模块可能会遇到相同的问题:
['FCNTL', 'OpenSSL', 'email.Generator', 'email.Iterators', 'email.Utils', 'pkg_resources', 'pywintypes', 'resource', 'win32api', 'win32con', 'win32event', 'win32file', 'win32pipe', 'win32process', 'win32security']
发送邮件的python源码
# -*- coding: utf8 -*-
'''
Created on 2012-9-10
@author : duxuefeng
'''
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
mailto_list=["*****@163.com"]
mail_host="smtp.163.com"
mail_user="******@163.com"
mail_pass="*****"
mail_postfix="163.com"
mail_sub="email测试"
def send_mail(to_list,sub,content):
me='***@163.com'
msg=MIMEText(content,_subtype='plain',_charset='utf-8')
msg['subject']=Header(sub,'utf-8')
try:
server=smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user,mail_pass)
server.sendmail(me,to_list,msg.as_string())
server.close()
return True
except Exception,e:
print str(e)
return False
if __name__=="__main__":
mail_text = "你好,这是测试邮件"
send_mail(mailto_list,mail_sub,mail_text)
编译源码:
'''
Created on 2012-9-10
@author : duxuefeng
'''
from distutils.core import setup
import py2exe
setup(console = ["mail.py"])
py2exe常用参数:
- Options for 'py2exe' command: