您的位置:

python自定发送邮件,Python发送邮件

本文目录一览:

Python自动发送邮件多个人收件人代码更改?

msg['To'] = "a@mail.com;b@mail.com" # 多个邮件接收者,中间用;隔开

msg['Cc'] = "c@mail.com;d@mail.com" # 多个邮件抄送者,中间用;隔开

如何用python自动发送邮件

注意如果使用qq的smtp转发功能的话,需要在设置页面中将该功能打开,然后设定密码,改密码就是赋值给下文password中的。

开启smtp转发功能文档

[python] view plain copy

#from email.MIMEText import MIMEText    #old version cannot recongnize by new python

from email.MIMEText import MIMEText

from email.Header import Header

msg = MIMEText('hello, send by python','plain','utf-8');

from_addr = "*****@qq.com"   #email addresss include domain name

password = "******"        #password

to_addr = "****@qq.com"   # target email address

smtp_server = "smtp.qq.com"       #smtp sever domain for qq is smtp.qq.com

import smtplib

server = smtplib.SMTP(smtp_server,25);

server.set_debuglevel(1)

server.login(from_addr,password);

server.sendmail(from_addr,[to_addr], msg.as_string())

server.quit()

上面这个是没有主题的,有主题的话建议采用下面这个代码

下面是连续发送有主题的文件10封

[python] view plain copy

from email.Header import Header

from email.MIMEText import MIMEText

from email import encoders

from email.utils import parseaddr, formataddr

import smtplib

def _format_addr(s):

name, addr = parseaddr(s)

return formataddr((Header(name, 'utf-8').encode(), addr))

from_addr = "*****@qq.com"   #email addresss include domain name

password = "******"        #password

to_addr = "****@qq.com"   # target email address

smtp_server = "smtp.qq.com"       #smtp sever domain for qq is smtp.qq.com

for num in range(1,11):

msg = MIMEText('hello, send by Tom', 'plain', 'utf-8');

msg['From'] = _format_addr('Tom %s' % from_addr)

msg['To'] = _format_addr('addministrator %s' % to_addr)

msg['Subject'] = Header('The greeting from Tom','utf-8').encode()

server = smtplib.SMTP(smtp_server,25)

server.set_debuglevel(1)

server.login(from_addr, password)

#server.sendmail(from_addr, [to_addr], msg.as_string())

server.sendmail(from_addr, [to_addr], msg.as_string())

server.quit()

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的博客主页 》