📄 jfemail.py
字号:
#!d:\Python\python.exe
#-*- coding: gb2312 -*-
####Author:jokerfox#######
####QQ:55708051###########
####Email:jokerfox@qq.com#
import smtplib,mimetypes
from email import Encoders
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
import sys
import os
###以下几个数据参数 根据自己的需要设置好
SMTP_HOST='smtp.qq.com' #邮件服务器的地址
FROM_EMAIL='jokerfox@qq.com' #发送方的Email地址
TO_EMAIL='jokerfox@qq.com' #接收方的Email地址
USER='jokerfox' # 发送邮件时需要认证的用户名
PASSWORD='123456'# 以及密码
SUBJECT='你好'#邮件的标题
CONTENT='大家好才是真的好'
DEBUGLEVEL=0 ##设置调试级别
#####参数设置完毕#############
class jfEmail:
###构造函数
###Host->邮件服务器的地址
###From->发送方的Email地址
###To->接收方的Email地址
###Subject->邮件的标题
def __init__(self,Host=None,User=None,Pwd=None,From=None,To=None,Subject=None,Content=None,Debuglevel=0):
self.msg={}
self.msg=MIMEMultipart()
self.host=Host
self.FromEmail=From
self.ToEmail=To
self.subject=Subject
self.debuglevel=Debuglevel
self.content=Content
self.user=User
self.pwd=Pwd
##设置调试级别 level=1则显示调试结果
def setDebuglevel(self,level):
if (level==1):
self.debuglevel=1
else:
self.debuglevel=0
##增加一个附件
def addAttachment(self,_filepath):
m=self._getMINEAttachment(_filepath)
if (m!=None):
self.msg.attach(m)
else:
return None
###增加附件的操作
def _getMINEAttachment(self,_filepath):
try:
fp=open(_filepath,"rb")
ctype,encoding=mimetypes.guess_type(_filepath)
if ctype is None or encoding is not None:
ctype = 'application/octet-stream'
maintype,subtype=ctype.split('/',1)
m = MIMEBase(maintype,subtype)
m.set_payload(fp.read())
fp.close()
Encoders.encode_base64(m)
m.add_header('Content-disposition','attachment',filename=_filepath)
return m
except:
return None
#设置邮件标题
def setSubject(self,_subject):
self.subject=_subject
#设置邮件的接收方
def setToEmail(self,_To):
self.ToEmail=_To
#设置邮件的发送方
def setFromEmail(self,_From):
self.FromEmail=_From
##设置邮件服务器地址
def setHost(self,_host):
self.host=_host
## 设置发送邮件的文本内容
def setContent(self,_content):
self.content=_content
##设置SMTP 认证用户名
def setUser(self,_user):
self.user=_user
##设置SMTP 认证密码
def setPwd(self,_pwd):
self.pwd=_pwd
##发送带附件的邮件
def SendMail(self):
if (self.host==None):
print "SMTP Host is Empty!"
self.doExit()
if (self.user==None or self.pwd==None):
print "User or Password is empty!"
self.doExit()
if (self.subject==None):
self.subject="fishfox"
if (self.FromEmail==None):
print "Sender Email Address is Empty!"
self.doExit()
if (self.ToEmail==None):
print "Receiver Email Address is Empty!"
self.doExit()
self.msg['subject']=self.subject
self.msg['To']=self.ToEmail
self.msg['From']=self.FromEmail
txt=MIMEText(self.content,_charset='gb2312')
self.msg.attach(txt)
s=smtplib.SMTP(self.host)
try:
s.login(self.user,self.pwd)
except:
print "Login Failed!"
self.doExit()
if (self.debuglevel==1):
s.set_debuglevel(1)
try:
s.sendmail(self.msg['From'], self.msg['To'], self.msg.as_string())
except:
print "Error!"
self.doExit()
##退出
def doExit(self):
#`pause`
if (raw_input('按回车键键退出')):
pass
sys.exit()
def main():
filepath=raw_input('请输入要发送的附件本地路径:')
if (not os.path.exists(filepath)):
print "文件不存在!!"
raw_input("按回车键键退出!")
sys.exit()
print "开始发送邮件......"
#myMail=jfEmail(Host=SMTP_HOST,To=TO_EMAIL,From=FROM_EMAIL,Subject=SUBJECT)
myMail=jfEmail()
myMail.setHost(SMTP_HOST)
myMail.setToEmail(TO_EMAIL)
myMail.setFromEmail(FROM_EMAIL)
myMail.setSubject(SUBJECT)
myMail.setDebuglevel(DEBUGLEVEL)
myMail.setContent(CONTENT)
myMail.addAttachment(filepath)
myMail.setUser(USER)
myMail.setPwd(PASSWORD)
myMail.SendMail()
print "邮件发送成功!"
if (raw_input('按回车键键退出')):
pass
if __name__=="__main__":
main()
#exec('pause')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -