普通发送邮件

使用email模块和stmplib模块,内容比较固定,配好了即可实现,代码如下

一、普通邮箱发送

# -*- coding:utf-8-*-
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText ## 邮件正文
from email.mime.application import MIMEApplication
from email.mime.image import MIMEImage # 收件人
to_lst = ["xxx@189.cn","xxx@163.com"] # 发件人
sender = "xxx@163.com" # 抄送人
cc_lst = ["xxx@189.cn","xxxa@163.com"] # 准备email
email = MIMEMultipart()
email['Subject'] = "console日常巡检" #标题
email['From'] = sender
email['To'] = ",".join(cc_lst) # 发送
email['Cc'] = ",".join(to_lst) #抄送 # 邮件正文
text = MIMEText("这是邮箱内容",_subtype="plain",_charset="utf-8")
text1 = MIMEText("我的图片是:<img src='cid:jay'/>",_subtype="html",_charset="utf-8")
email.attach(text)
# 发送附件
fu1 = MIMEApplication(open("hello_word.txt",mode='rb').read())
fu1.add_header("Content-disposition","attachment",filename = "hello_word.txt")
email.attach(fu1) # 图片
tu = MIMEImage(open("o_kj.gif",mode='rb').read())
tu.add_header("Content-ID","jay") #对应cid
email.attach(tu) #发送邮件
smtp = smtplib.SMTP()
#连接smtp服务器
smtp.connect("smtp.163.com") ## 填入你选择的smtp服务
# 填写用户名密码,密码是smtp的授权吗
smtp.login(sender,"xxx")
smtp.sendmail(sender,to_lst,email.as_string())
print("ok")

二、写函数发送邮箱

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.image import MIMEImage def send_mail(username,password,recv,cc,title,content,mail_host='smtp.163.com',port=25):
"""
发送邮件函数默认使用的是163smtp
:param username: 邮箱账号 例如:xxx@163.com
:param password: smtp授权密码: 例如:djsjdiasd
:param recv: 收件人地址,多账号用逗号分开
:param cc: 抄送人邮箱地址,多人要用逗号分开
:param title: 邮箱标题
:param content: 邮箱内容
:param mail_host: 邮箱服务器
:param port: 默认的smtp端口 25
:return:
"""
email = MIMEMultipart()
email['Subject'] = title
email['From'] = username
email['To'] = ",".join(recv)
email['Cc'] = ",".join(cc)
## 邮箱正文
text = MIMEText(content,_subtype="plain",_charset="utf-8")
email.attach(text)
## 发送邮件
smtp = smtplib.SMTP()
## 连接smtp服务器
smtp.connect(mail_host)
## 登录stmp发送邮件
smtp.login(username,password)
smtp.sendmail(recv,cc,email.as_string())
print("ok") email_user = "xxx@163.com"
email_pwd = "xxx"
recv_lst = ["xxx@163.com"]
cc_lst = ["xxg@189.cn","xxx@163.com"]
title = '测试邮箱标题'
content = '这是邮箱内容'
send_mail(email_user,email_pwd,recv_lst,cc_lst,title,content)

三、写一个发送邮箱的类

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.image import MIMEImage class SendMail:
def __init__(self,username,passwd,recv,cc,title,content,file=None,images=None,
email_host='smtp.163.com',port=25):
self.username = username
self.passwd = passwd
self.recv = recv
self.cc = cc
self.title = title
self.content = content
self.file = file
self.images = images
self.email_host = email_host
self.port = port
def send_mail(self):
email = MIMEMultipart()
if self.file:
att = MIMEApplication(open(self.file,mode='rb').read())
att.add_header("Content-dispostion","attachment",filename=self.file)
email.attach(att)
email.attach(MIMEText(self.content,_subtype="plain",_charset="utf-8")) ##邮箱正文内容
email['Subject'] = self.title # 标题
email['From'] = self.username
email['To'] = ",".join(self.recv) # 发送
email['Cc'] = ",".join(self.cc) # 抄送
self.smtp = smtplib.SMTP()
self.smtp.connect(self.email_host,self.port)
# 发送邮件到服务器的对象
self.smtp.login(self.username,self.passwd)
try:
self.smtp.sendmail(self.username,self.recv,email.as_string())
except Exception as e:
print("邮箱发送失败。。",e)
else:
print("邮箱发送成功")
def __del__(self):
self.smtp.quit() if __name__ == '__main__':
email_user = "xx@163.com"
email_pwd = "xxx" #注意这里面是smtp授权密码
recv_lst = ["xxx",] #要发送邮箱的地址
cc_lst = ["dxxx@189.cn", "xxx@163.com"] #抄送地址
title = 'python测试邮箱'
content = '这是邮箱内容python'
file = '' #附件文档
image = '' #附件图片 mail = SendMail(
username=email_user,passwd=email_pwd,recv=recv_lst,cc=cc_lst,
title=title,content=content
)
mail.send_mail()

python邮箱发送的更多相关文章

  1. Python Email发送,通知业务完成

    Email 发送 #!/usr/bin/python # -*- coding: UTF-8 -*- import base64 import smtplib from email.mime.text ...

  2. python socket发送魔法包网络唤醒开机.py

    python socket发送魔法包网络唤醒开机.py 现在的电脑应该都普遍支持有线网络的WOL了,支持无线网络唤醒的电脑,可能比较少. """ python socke ...

  3. Linux配置邮箱发送(MUTT/MSMTPQ)

    配置邮箱发送 http://www.ilanni.com/?p=10589

  4. java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例

    研究了近一天的时间,通过查阅相关资料,终于对java发送邮件的机制,原理有了一点点的理解,希望能够帮到大家! 1.首先要向你的项目里导入1个jar包:mail-1.4.4.jar即可(实现qq和163 ...

  5. 通过邮箱发送html报表

    前言 需求是发送邮件时, 可以将报表正文贴到邮件里, 可以正常复制选中报表内容. 目前的做法是简单粗暴的转成了一张图片, 这样效果显然是很糟糕的. 今天看到邮箱里可以预览Word, Excel, F1 ...

  6. spring 实现邮箱发送

    使用spring mail 实现的邮箱发送功能,包括附件的发送(附件发送要保证附件存在的路径是真实),使用maven集成jar包,通过spring mvc 实现前后台的调用,发送方使用的是163邮箱, ...

  7. java邮箱发送

    一.为何要使用邮箱发送 相信大家在日常工作生活中少不了和邮件打交道,比如我们会用邮件进行信息交流,向上级汇报日常工作:邮件发送的原理是什么?邮件是如何发送的呢?本系列教程将会讲解邮件如何申请可用jav ...

  8. JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)

    JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...

  9. centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本)

    centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本) #####################     sendmail.py  begin     ######## ...

随机推荐

  1. dw选择器

    选择器并没有一个固定的定义,在某种程度上说,jQuery的选择器和样式表中的选择器十分相似.选择器具有如下特点:1.简化代码的编写2.隐式迭代3.无须判断对象是否存在jQuery 的选择器可谓之强大无 ...

  2. Mongodb学习笔记(四)管理

    一.数据导出.导入 数据导入:mongoexport ./mongoimport -d 数据库 -c 集合 文件名 数据导出:mongoimport 参数说明: -d:指明使用的库,如text -c: ...

  3. Python 多任务(线程) day2 (1)

    结论:多线程全局变量是共享的 (03) 因为多线程一般是配合使用,如果不共享,那么就要等到一个线程执行完,再把变量传递给另一个线程,就变成单线程了 但是如果多个线程同时需要修改一个全局变量,就会出现资 ...

  4. CSS学习(8)盒模型

    box:盒子,每个元素在页面中都会生成一个矩形区域(盒子) 盒子类型: 1.行盒,display属性=inline的元素,不换行(默认值) 2.块盒,display属性=block的元素,换行 浏览器 ...

  5. Unity引用System.Windows.Forms遇到的一些坑

    这两天在做一个unity打开文件选择框的功能.网上找到两种方法, 第一种是调用win32打开对话框,这个挺好,但是有个致命的问题,没办法多选!!!多选的话返回的是根目录的路径,文件名返回不了,找了半天 ...

  6. python报错使用yum命令报错File &quot;/usr/bin/yum&quot;, line 30 except KeyboardInterrupt, e: SyntaxError: invalid syntax问题

    参考链接:https://blog.csdn.net/ltz150/article/details/77870735 1.背景: CentOS 7升级Python到3.6.2后,需要在/usr/bin ...

  7. Yii2框架 常用函数整合

    1.使用事务添加数据: public function create() { if($this->validate()) { $trans = Yii::$app->db->begi ...

  8. thinkphp 连接webservice接口

    嗯,我现在真的好像骂人啊,但是我又是个文明的人,所以我就写出来让自己冷静一下 ok,正事,thinkphp连别人写的webservice接口 刚开始他叫什么nc接口,就把我给骗了,这就是人家的名字,和 ...

  9. Airflow 操作知识总结(完善中)

    airflow默认以utc时区运行,如果需要计算正确的时间,需要把时间进行时区转换,核心代码如下 #将本地时间转换为utc时间,再设置为start_date tz = pytz.timezone('A ...

  10. Kettle — 使用手册

    https://blog.csdn.net/u013468915/article/details/82629260 kettle 教程(一):简介及入门 https://blog.csdn.net/q ...