用python函数发邮件 python 发邮件

用Python发送邮件,可以群发,带有多个附件'''''
函数说明用python函数发邮件:Send_email_text() 函数实现发送带有附件用python函数发邮件的邮件用python函数发邮件 , 可以群发用python函数发邮件 , 附件格式包括:xlsx,pdf,txt,jpg,mp3等
参数说明:
1. subject:邮件主题
2. content:邮件正文
3. filepath:附件的地址, 输入格式为["","",...]
4. receive_email:收件人地址, 输入格式为["","",...]
'''
def Send_email_text(subject,content,filepath,receive_email):
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
sender = "发送方邮箱"
passwd = "填入发送方密码"
receivers = receive_email#收件人邮箱
msgRoot = MIMEMultipart()
msgRoot['Subject'] = subject
msgRoot['From'] = sender
if len(receivers)1:
【用python函数发邮件 python 发邮件】msgRoot['To'] = ','.join(receivers) #群发邮件
else:
msgRoot['To'] = receivers[0]
part = MIMEText(content)
msgRoot.attach(part)
##添加附件部分
for path in filepath:
if ".jpg" in path:
#jpg类型附件
jpg_name = path.split("\\")[-1]
part = MIMEApplication(open(path,'rb').read())
part.add_header('Content-Disposition', 'attachment', filename=jpg_name)
msgRoot.attach(part)
if ".pdf" in path:
#pdf类型附件
pdf_name = path.split("\\")[-1]
part = MIMEApplication(open(path,'rb').read())
part.add_header('Content-Disposition', 'attachment', filename=pdf_name)
msgRoot.attach(part)
if ".xlsx" in path:
#xlsx类型附件
xlsx_name = path.split("\\")[-1]
part = MIMEApplication(open(path,'rb').read())
part.add_header('Content-Disposition', 'attachment', filename=xlsx_name)
msgRoot.attach(part)
if ".txt" in path:
#txt类型附件
txt_name = path.split("\\")[-1]
part = MIMEApplication(open(path,'rb').read())
part.add_header('Content-Disposition', 'attachment', filename=txt_name)
msgRoot.attach(part)
if ".mp3" in path:
#mp3类型附件
mp3_name = path.split("\\")[-1]
part = MIMEApplication(open(path,'rb').read())
part.add_header('Content-Disposition', 'attachment', filename=mp3_name)
msgRoot.attach(part)
try:
s = smtplib.SMTP()
s.connect("smtp.mail.aliyun.com") #这里我使用的是阿里云邮箱,也可以使用163邮箱:smtp.163.com
s.login(sender, passwd)
s.sendmail(sender, receivers, msgRoot.as_string())
print ("邮件发送成功")
except smtplib.SMTPException as e:
print("Error, 发送失败")
finally:
s.quit()
如何通过python发送彩色标题的邮件首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器 。SMTP协议只能用来发送邮件 , 不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议 。SMTP协议的默认TCP端口号是25 。
本文主要介绍利用'smtplib' , 'email'两个模块来实现邮件的发送,可以如下查看两个模块的函数和方法:
smtplib模块简介:
smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])
此为SMTP类构造函数,表示与SMTP服务器之间的连接,并根据这个连接向smtp服务器发送指令,执行相关操作(如:登陆、发送邮件),且每个参数都是可选的 。
其中最重要的参数:
host:smtp服务器主机名
port:smtp服务的端口,默认是25;
如果在创建SMTP对象的时候提供了这两个参数,在初始化的时候会自动调用connect方法去连接服务器 。
smtplib.SMTP还提供了如下方法:
SMTP.set_debuglevel(level):设置是否为调试模式
SMTP.connect([host[, port]]):连接到指定的smtp服务器 。参数分别表示 smpt主机和端口 。
SMTP.docmd(cmd[, argstring]):向smtp服务器发送指令 。
SMTP.helo([hostname]) :使用"helo"指令向服务器确认身份 。
SMTP.login(user, password):登陆到smtp服务器 。现在几乎所有smtp服务器,都必须在验证用户信息合法之后才允许发送邮件 。(重要?。?
SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options]):发送邮件 。这里要注意一下第三个参数,msg是字符串,表示邮件 。我们知道邮件一般由标题 , 发信人 , 收件人 , 邮件内容,附件等构成,发送邮件的时候,要注意msg的格式 。这个格式就是smtp协议中定义的格式 。SMTP.quit() :断开与smtp服务器的连接 , 相当于发送"quit"指令 。(重要?。?
常用的函数方法:
email模块
1.class email.message.Message
__getitem__,__setitem__实现obj[key]形式的访问 。
Msg.attach(playload): 向当前Msg添加playload 。
Msg.set_playload(playload):
Msg.add_header(_name, _value, **_params): 添加邮件头字段 。
2.class email.mime.base.MIMEBase(_maintype, _subtype, **_params)
所有MIME类的基类,是email.message.Message类的子类 。
3.class email.mime.multipart.MIMEMultipart()
在3.0版本的email模块 (Python 2.3-Python 2.5) 中,这个类位于email.MIMEMultipart.MIMEMultipart 。这个类是MIMEBase的直接子类,用来生成包含多个部分的邮件体的MIME对象 。
4.class email.mime.text.MIMEText(_text)
使用字符串_text来生成MIME对象的主体文本 。
获得所需要使用的邮箱的host地址和port端口号,(本文使用的是163邮箱,对应的smtp服务器地址:mail.163.com,端口号25)
常用邮箱的smtp服务器地址和端口号如图:
编写程序如下:
#! /usr/bin/env python
import smtpli
from email.mime.text import MIMEText
mailto_list=['xxxx@xxx.com']#收件人(列表)
mail_host="smtp.163.com"#使用的邮箱的smtp服务器地址
mail_user="name"#用户名
mail_pass="pwd"#密码
mail_postfix="postfix"#邮箱的后缀
def send_mail(to_list,sub,content):
me="hello" "" mail_user "@" mail_postfix ""
msg = MIMEText(content,_subtype='plain')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list)#将收件人列表以‘;’分隔
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
for i in range(5):#发送五封,不过会被拦截的 。。。
if send_mail(mailto_list,"hello","haha!"):#邮件主题和邮件内容
print "done!"
else:
print "failed!"
最后,可以运行编写的py文件,可以得到如图所是的结果,代表邮件发送成功 。
7
这样 , 就能成功实现用Python发送邮件啦!可以看到接收端接收到的邮件如:
如何使用Python控制摄像头拍照并发邮件?这个实现起来非常容易,主要分为2步,首先控制摄像头拍照,然后将拍到的照片作为邮件附件发送就行,下面我简单介绍一下实现过程,实验环境win7 python3.6 pycharm5.0,主要内容如下:
控制摄像头拍照
这里我们直接使用opencv的python接口包就行,借助于opencv强大的功能,我们只需要很少量的代码就可以实现摄像头拍照的功能,具体步骤如下:
1.首先,安装opencv-python模块,这个直接在cmd窗口输入命令“pip install opencv-python”就行,如下,很快就能安装成功:
2.安装完成后,我们就可以编写代码来实现控制摄像头拍照的功能了 , 测试代码如下,非常简单,打开摄像头,按帧播放,当按下q键时保存图片并退出,当前目录下就会出现拍到的照片,后面就是将这个照片作为邮件附件进行发送:
发送邮件
这里以发送163邮件为例,主要用到Python自带的smtplib模块,专门用于发送邮件,具体步骤如下:
1.首先,需要开启开启邮箱POP3/SMTP服务 , 这个直接登录邮箱,在上面菜单栏点击“设置”,勾选POP3/SMPT服务就行,如下:
接着点击左边管理列表的“客户端授权密码”,设置授权密码,后面的python代码中需要借助这个密码才能登陆邮箱服务器发送邮件:
2.一切设置完成后,我们就可以直接编写代码来发送带有照片的邮件了 , 测试代码如下,非常简单,只需要在邮件中attach一下照片就行,函数输入参数分别为发送人邮箱、密码、接收人邮件列表、主题、内容和附件名称:
运行这个程序,邮件就可以正常发送,并且可以看到发送的照片附件,如下:
至此,我们就完成了利用python来控制摄像头拍照并发送邮件 。总的来说,整个过程不难,思路也比较清晰,只要你有一定的python基础,熟悉一下上面的代码,多调试几遍程序,很快就能掌握的 , 网上也有相关教程和资料 , 非常丰富详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧 , 也欢迎大家评论、留言 。
用python函数发邮件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python 发邮件、用python函数发邮件的信息别忘了在本站进行查找喔 。

    推荐阅读