首页 > 代码库 > python发邮件
python发邮件
以前的公司上班上网或者收发邮件都得小心翼翼的,怕一不小心被有心人瞧见,又得被说说。为了能发邮件而不被发现,嘿嘿,我就用python写了个邮件发送程序,用控制台控制,不了解的人一定以为哥还在编程工作呢。哈哈。
下面简单介绍下如何使用python发送邮件,包括普通文本内容,也可以带附件,或者HTML内容的邮件。可以说有了python,一切都变得非常的容易。
smtplib 模块是用来发送email的标准module,另外配合email.mime内的几个module实现起来就非常的简单。
[python] view plaincopyprint?
- def sendmail(message):
- try:
- smtp = smtplib.SMTP(EMAIL_HOST)
- smtp.login(EMAIL_USER, EMAIL_PWD)
- smtp.sendmail(EMAIL_USER+"@"+EMAIL_POSTFIX, TO_EMAIL, message)
- smtp.quit()
- print ‘email send success.‘
- except Exception ,e:
- print e
- print ‘email send failed.‘
[python] view plaincopyprint?
- def sendwithoutattachment():
- msg = MIMEText(getcontent(), ‘plain‘,‘utf-8‘)
- getheader(msg)
- sendmail(msg.as_string())
我将发送简单文本内容的邮件单独独立为一个函数,使用MIMEText生成,注意这里用到了utf-8,因为内容有可能是中文,所以要特别指定。如果要发送html内容,则讲plain更改为html即可。
[python] view plaincopyprint?
- def getheader(msg):
- msg[‘From‘] = ME
- msg[‘To‘] = ";".join(TO_EMAIL)
- msg[‘Subject‘] = EMAIL_HEADER
- msg[‘Date‘] = formatdate(localtime=True)
getheader函数是用来设置发送者,接受者,主题和发送时间的。
[python] view plaincopyprint?
- def getcontent():
- path = os.getcwd()
- file = os.path.join(path, CONTENT_FILE_NAME)
- content = open(file, ‘rb‘)
- data = content.read()
- try:
- data = data.decode(‘gbk‘)
- except :
- data = data.decode(‘gbk‘,‘ignore‘)
- content.close()
- return data
[python] view plaincopyprint?
- def getattachment(msg):
- ctype, encoding = mimetypes.guess_type(ACCESSORY_FULLPATH)
- if ctype is None or encoding is not None:
- ctype = ‘application/octet-stream‘
- maintype, subtype = ctype.split(‘/‘, 1)
- #Formating accessory data
- data = open(ACCESSORY_FULLPATH, ‘rb‘)
- file_msg = MIMEBase(maintype, subtype)
- file_msg.set_payload(data.read( ))
- data.close( )
- encode_base64(file_msg)
- #file_msg["Content-Type"] = ctype # if add type then return error 10054
- file_msg.add_header(‘Content-Disposition‘, ‘attachment‘, filename = ACCESSORY_NAME)
- msg.attach(file_msg)
以上基本包括了发送邮件的主要几个函数,具体smtplib模块和MIME等内容,资料很多,这里就不详细讲解了,有感兴趣的可以上网search。
python发邮件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。