您的位置:

python发送邮件示例的简单介绍

本文目录一览:

如何在python程序中发邮件

提供以下两种方式:

利用smtplib,email库

coding:utf-8

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

import sys

reload(sys)

sys.setdefaultencoding("utf8")

# 配置收发件人

recvaddress = ['receiveemail@sina.com','receiveemail@qq.com']

# 163的用户名和密码

sendaddr_name = 'your_email@163.com'

sendaddr_pswd = 'your_password'

class SendMail:

def __init__(self,recver=None):

"""接收邮件的人:list or tuple"""

if recver is None:

self.sendTo = recvaddress

else:

self.sendTo = recver

def send(self,sub,content,attachcontent):

"""发送邮件"""

self.msg = MIMEMultipart()

#设置发送邮件

self.msg['from'] = sendaddr_name

try:

#设置邮箱服务器

smtp = smtplib.SMTP('smtp.163.com',25)

#登录

smtp.login(sendaddr_name,sendaddr_pswd)

#设置发送主题

self.msg['Subject'] = sub

#设置邮件内容

self.msg.attach(MIMEText(content))

#设置邮件附件,将附件的内容attachcontent,写到filename的文件中,作为附件发送

att1 = MIMEText(attachcontent, 'base64', 'gb2312')

att1["Content-Type"] = 'application/octet-stream'

att1["Content-Disposition"] = 'attachment; filename="testattach.txt"'#这里的filename可以任意写,写什么名字,邮件中显示什么名字

self.msg.attach(att1)

#发送邮件

smtp.sendmail(self.msg['from'], self.sendTo, self.msg.as_string())

smtp.close()

print(u"发送邮件成功")

except Exception,e:

print(u'发送邮件失败:'+str(e))

raise

#调用

s = SendMail()

subject = "主题"

content = "这里是邮件内容"

attachcontent = "这里是附件哦"

s.send(subject,content,attachcontent)

2.利用webpy自带的email模块

首先要安装web.py的依赖库

pip install web.py

#coding:utf-8

import web

##### email服务器配置 #####

web.config.smtp_server = 'smtp.sina.com'

web.config.smtp_port = 25

web.config.smtp_username = '你的email前缀,@前的字符串'

web.config.smtp_password = '你的密码'

web.config.smtp_starttls = True

send_from="youremail@sina.com"

receiveemailaddr = ["receiveemail@qq.com","receiveemail@163.com"]

subject=u'这里是主题'

message=u'这里是邮件的内容' 

def sendemail(sendfrom,sendto,subject,message,cc=None, bcc=None,headers=({'User-Agent': 'webpy.sendmail', 'X-Mailer': 'webpy.sendmail',})):

try:

 web.sendmail(send_from,sendto,subject,message,cc=cc,bcc=bcc)

 print "邮件发送成功"

except Exception,e:

print(str(e))

#调用

sendemail(send_from,receiveemailaddr,subject,message)

Python向多人发送、抄送带附件的邮件(含详细代码)

python要发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后使用smtplib.smtp发送。

步骤:

(1)设置服务器所需信息(ps:部门邮箱密码为授权码,需自行登录相应邮箱设置授权码)

(2)设置email信息

(3)附件部分

(4)登录邮箱并发送邮件

附上源码:

python批量发送邮件--包括批量不同附件

小猪在公司做出纳,干的活却包括了出纳、会计、结算专员等工作,周末都要被无奈在家加班,主要还没有加班费,简直是被公司严重压榨。每个月初都要给每个工长发预付款账单邮件,月中发结算款账单。重复性机械工作。

一个及格线上的程序员,最起码的觉悟就是将重复性的机械工作自动化,于是,在我花了一个多小时,帮她给一部分工长发了一次邮箱后,默默的回来写了这个脚本。

所以,设计要点就是一个字—— 懒 。

恩,就酱。

经过我观察,邮件内容分为两种,这里先说第一种,“结算款”:

(1) 邮件内容(content)不变,为固定的txt文本

(2) 附件(attch)为每个工长的结算账单(excel文件.xlsx),此文件命名为总账单中自动分割出来的名字(暂时不懂怎么分割出来的=.=),格式为:

(3) 邮件主题(Subject)为附件名(不带后缀名)

(4) 邮件接收对象(工长)的名单及其邮箱地址基本不变,偶尔变动

(5)

(1) 将工长及其邮箱地址存为CSV文件的两列,python中将其读取为字典形式,存储以供后续查询邮箱地址。

(2) 遍历文件夹中的附件(.xlsx类型文件),对其进行两种操作,一方面将其名字(不带路径和后缀)提取出来,作为邮件主题(Subject),并对Subject进一步划分,得到其中的人名(工长);另一方面,将其传入MIMEbase模块中转为邮件附件对象。

(3) 由上述得到的人名(name),在字典形式的通讯录中,查找相应的地址(value),即为收件人名称和地址

(4) 利用python中的email模块和smtp模块,登录自己的邮箱账号,再对每个附件,得到的收件人名和地址,添加附件,发送邮件。done

在设计过程中有几点需要注意

(1) 有时一个邮件地址对应两个人名,此时应该在CSV文件中分为两行存储,而不是将两个人名存为同一个键;

(2)有账单.xlsx文件,通讯录里却没存储此人记录,程序应该打印提示没有通讯记录的人名,且不能直接退出,要保证员工看到此提示,此第一版程序还有解决此问题;

(3)此程序发送的邮件内容为纯文本,若要求邮件内容有不同格式(如部分加粗,部分红色),还有小部分需要每次更改的地方(如邮件内容包含当前月份),如何解决?(这就是第二种邮件内容,“预算款”);

(4)重名的,暂时还没碰到,程序中也没给出解决方案。

第一版到此,20180830,待更新

第二版更新,20180904

第三版更新,20180909

转战CSDN博客,更多博客见传送门《 xiaozhou的博客主页 》