`
marlonyao
  • 浏览: 252680 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python发邮件

阅读更多

下面的代码的作用是将电子书作为附件发送到163邮箱。

 

#!/usr/bin/env python
# -*- coding: utf8 -*-

import smtplib,email,os,sys
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email import Encoders
from email.header import Header


def send_file(file):
	base_name = os.path.basename(file) # windows下使用 decode('gbk').encode('utf8')

	msg=MIMEMultipart()

	msg['From'] = from_email
	msg['To'] = to_email
	msg['Subject'] = Header('===book===' + base_name, 'utf8')
	msg['Reply-To'] = from_email

	body=MIMEText('发送文件: ' + base_name, _subtype='html',_charset='utf8')
	msg.attach(body)

	part = MIMEBase('application', "octet-stream")
	part.set_payload( open(file,"rb").read() )
	Encoders.encode_base64(part)
	part.add_header('Content-Disposition', 'attachment; filename="%s"' % str(Header(base_name, 'utf8')))
	msg.attach(part)

	s = smtplib.SMTP(smtp_server)
	s.login(user_name, password)

	s.sendmail(from_email,to_email,msg.as_string())
	s.close()

if __name__ == '__main__':
	smtp_server='smtp.163.com'
	from_email=('xxxxxxx@163.com')
	to_email ='xxxxxxx@163.com'
	user_name='xxxxxxx@163.com'
	password='xxxxxxx'

	# get input files
	input_files = sys.argv[1:]
	if len(input_files) == 0:
		print >> sys.stderr, 'Error, no input specified'
		exit(1)
	for file in sys.argv[1:]:
		print "start sending file: " + file
		send_file(file)
		print "OK sending file: " + file

 

代码很简单,网上很容易找到,比较tricky的地方是如何处理中文字符,容易出现乱码,主要原因在于python下的字符串实际上字节序列,不是字符序列,Python3.0下已经是字符串已经改为字符序列了,我这里使用的还是Python2.6。可能出现乱码的地方有标题, 正文内容,以及附件文件名称。正文内容可以在MIMEText构造函数中传递_charset参数,标题和附件名称通过Header类来设置正确的编码。需要注意的是,传递进去的字符串(实际上是字节序列)和指定的编码必须匹配,否则肯定也是乱码。

 

 

分享到:
评论
1 楼 高攀sky 2016-02-22  
     

相关推荐

    Python发邮件代码

    Python发邮件代码

    python发邮件详细实例

    详细展示了各种使用python发邮件的程序实例

    Python发邮件源码

    这里我们关注的主题是“Python发邮件源码”,这通常涉及到使用SMTP(Simple Mail Transfer Protocol)来实现邮件的发送。下面我们将深入探讨这个话题,并提供一个实际的Python代码示例。 首先,你需要了解Python中...

    python发邮件程序

    python发邮件程序,发送方法:./mail.py 收件人 主题 html内容 图片文件 附件文件'

    python发邮件

    python发邮件

    python发邮件示例

    python发邮件示例

    Python-Python实现自动发邮件支持HTML富文本

    接下来,设置邮件的基本信息,包括发件人、收件人、主题和邮件内容: ```python from_email = "your-email@example.com" to_email = "recipient-email@example.com" subject = "Python 自动发送的 HTML 邮件" ...

    python3发送邮件

    使用python3发送QQ电子邮件,发送人为自己,接收人可以一个可以多个。

    SVN变化发送邮件(Python)

    2. 创建邮件:利用`email.mime`模块创建邮件对象,设置发件人、收件人、主题和邮件正文。 3. 检查SVN变化:可能通过执行SVN命令行工具(如`svn log`或`svn diff`)来获取最近的提交信息,或者通过直接访问SVN仓库的...

    python邮件发附件方法

    "Python 邮件发附件方法" Python 邮件发附件方法是指使用 Python 语言发送带附件的电子邮件。该方法使用了 Python 的 email 模块,通过该模块可以创建一个带附件的邮件实例,并将其发送到指定的收件人邮箱中。 ...

    python爬虫发邮件示例demo

    在这个“python爬虫发邮件示例demo”中,我们将探讨如何结合Python的爬虫技术和邮件发送功能,实现自动抓取数据并将其通过电子邮件发送出去。 首先,我们需要了解Python中的两个关键库:`requests` 和 `...

    使用python通过qq邮箱代理发送邮件

    python发送邮件,通过qq邮箱代理,具体怎么设置请百度(获取qq邮箱授权码),可以发送邮件到邮箱,非常简洁的代码

    基于Python的邮件分类系统 开题报告.docx

    - 发件箱:展示已发送的邮件记录。 - 草稿箱:保存未完成的邮件草稿。 - 垃圾箱:存放被系统识别为垃圾的邮件。 - 标记箱:用户可以自行将邮件标记为重要或不重要。 - 邮箱黑名单:用户可以添加不想接收邮件的...

    python 发送邮件简单示例

    简单的python发送邮件的示例,基于python2.7

    python实现邮件自动发送

    本文实例为大家分享了python实现邮件自动发送的具体代码,供大家参考,具体内容如下 case 1:纯文本和HTML文件发送 # -*- coding: UTF-8 -*- import smtplib import traceback from email.mime.text import ...

    Python实现SMTP发送邮件详细教程

    Python实现SMTP发送邮件的详细教程旨在帮助开发者了解如何通过Python编程语言发送电子邮件。SMTP(Simple Mail Transfer Protocol)是一种用于在互联网上传输邮件的标准协议。在Python中,我们可以利用内置的`...

    python邮件接收发送【完整脚本】

    以上代码将帮助你实现Python邮件的发送和接收,包括添加附件。在实际应用中,你可能需要根据自己的邮箱服务商调整SMTP和IMAP服务器设置。此外,为了提高用户体验,可以考虑加入异常处理和日志记录功能。

    python发送邮件脚本

    python发送邮件代码,服务器配置请自行修改,脚本中的地址是内网搭建的邮件服务器。可以结合系统定时任务配置邮件定时发送。希望帮到你

    基于Python实现多进程的发送邮件.zip

    本课程设计的目标是利用Python实现多进程发送邮件的功能。 首先,我们需要了解Python中的`multiprocessing`模块,它是Python提供的一个标准库,用于实现多进程。通过创建子进程,每个进程可以独立地执行任务,互不...

Global site tag (gtag.js) - Google Analytics