python smtp邮件发送失败怎么办
原创:
失败原因可能有如下:1、主机与邮件服务器网络不通;2、邮件发送账号密码未设置或者设置不正确;3、python语法不正确
解决办法:1、主机与邮件服务器网络不通:需要保证主机可以正常访问外网,这样就可以访问到邮件服务器了。2、邮件账号密码未设置或者不正确:首先通过其他浏览器进行邮箱登陆验证,若可以正常登录说明邮箱账号正确,再根据你自己设置的邮箱账号配置文件的格式要求进行修改即可。3、python语法不正确,脚本编写完成之后可以执行如下命令进行语法校验:pyhton -c sendmailpy 这样就可以校验你的sendmailpy脚本的语法是否有问题,若有问题只需要根据提示定位到相应的行进行修正即可。
引用头文件
#!/usr/bin/env python
#--coding:utf-8--
import smtplib
import os
from emailmimetext import MIMEText
from emailmimemultipart import MIMEMultipart
from emailmimebase import MIMEBase
from email import encoders
创建“连接邮件服务器”函数
def smtp_connect( smtp_server, account, password, target ):
global smtp
global e_smtpserver
global e_account
global e_password
global e_target
global msg
e_smtpserver = smtp_server
e_account = account
e_password = password
e_target = target
try:
smtp = smtplibSMTP()
smtpconnect(e_smtpserver)
smtplogin(e_account, e_password)
except Exception, e:
print 'Mail connect failed: %s' % e
exit( -1 )
msg = MIMEMultipart('related')
创建“写邮件内容”函数
def smtp_set_content( subject, main_body ):
global msg
msg['Subject'] = subject
body = MIMEText( main_body, 'plain', 'utf-8' )
msgattach( body )
创建“添加附件”函数
def smtp_set_attachment( file_path ):
global msg
part = MIMEBase( 'application', 'octet-stream' )
partset_payload( open(file_path,'rb')read() )
encodersencode_base64(part)
partadd_header( 'Content-Disposition', 'attachment; filename=%s' % file_pathsplit('/')[-1] )
msgattach(part)
创建“发送邮件”函数
def smtp_send():
global smtp
global e_smtpserver
global e_account
global e_password
global e_target
global msg
try:
smtpsendmail( e_account, e_target, msgas_string() )
except Exception, e:
print 'Mail send Failed: %s' % e
exit( -1 )
使用示例
if __name__ == '__main__':
smtp_connect( 'smtpxxxxcomcn', 'xxxx@xxxxcomcn', 'password',
'xxxx@xxxxcomcn' )
smtp_set_content( 'Test subject', 'Test_content' )
smtp_set_attachment( osgetcwd() + '/mailpy' )
smtp_send()
0条评论