基于Python实现邮件发送
import smtplib
from email.mime.text import MIMEText
email_host = 'smtp.163.com' # 邮箱地址
email_user = 'szz_mail@163.com' # 发送者账号
email_pwd ='woshinige123' # 发送者密码 maillist = '1204044738@qq.com'
# 收件人邮箱,多个账号的话,用逗号隔开
msg = MIMEText('hai all:'
'这是邮件的内容请查收,请看附件') # 邮件内容
msg['Subject'] = '测试邮件' # 邮件主题
msg['From'] = email_user # 发送者账号
msg['To'] = maillist # 接收者账号列表
smtp = smtplib.SMTP(email_host, port=25)
# 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25
smtp.login(email_user, email_pwd) # 发送者的邮箱账号,密码
smtp.sendmail(email_user, maillist, msg.as_string())
# 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
smtp.quit() # 发送完毕后退出smtp
print('成功')
实现功能:(这是转发的):
邮件发送,支持文字,音频文件,文本文件,图形文件,应用程序及其它类型文件的发送;
支持不同的邮箱;
支持一次性往多个邮箱发送;
支持一次性发送n个附件;
支持中文命名的附件发送;
mail.conf配置:
[SMTP]
login_user = laiyuhenshuai@163.com
login_pwd = xxxxx
from_addr = laiyuhenshuai@163.com
to_addrs = ['mrxxx@163.com','1033553122@qq.com']
host = smtp.163.com
port = 25
说明:不同类型的邮箱(发件人邮箱),需要修改配置文件为对应的host和端口
smtp.163.com:25
smtp.qq.com:465
实践代码:
#!/usr/bin/env python
# -*- coding:GBK -*-
__author__ = 'shouke'
import ConfigParser
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.audio import MIMEAudio
from email.mime.application import MIMEApplication
import mimetypes
import os
class MyMail:
def __init__(self, mail_config_file):
config = ConfigParser.ConfigParser()
config.read(mail_config_file)
self.smtp = smtplib.SMTP()
self.login_user = config.get('SMTP', 'login_user')
self.login_pwd = config.get('SMTP', 'login_pwd')
self.from_addr = config.get('SMTP', 'from_addr')
self.to_addrs = config.get('SMTP', 'to_addrs')
self.host = config.get('SMTP', 'host')
self.port = config.get('SMTP', 'port')
# 连接到服务器
def connect(self):
self.smtp.connect(self.host, self.port)
# 登陆邮件服务器
def login(self):
try:
self.smtp.login(self.login_user, self.login_pwd)
except Exception as e:
print('%s' % e)
# 发送邮件
def send_mail(self, mail_subject, mail_content, attachment_path_set):
# 构造MIMEMultipart对象做为根容器
msg = MIMEMultipart()
msg['From'] = self.from_addr
# msg['To'] = self.to_addrs
msg['To'] = ','.join(eval_r(self.to_addrs))
msg['Subject'] = mail_subject
# 添加邮件内容
content = MIMEText(mail_content, _charset='gbk')
msg.attach(content)
for attachment_path in attachment_path_set:
if os.path.isfile(attachment_path): # 如果附件存在
type, coding = mimetypes.guess_type(attachment_path)
if type == None:
type = 'application/octet-stream'
major_type, minor_type = type.split('/', 1)
with open(attachment_path, 'rb') as file:
if major_type == 'text':
attachment = MIMEText(file.read(), _subtype=minor_type)
elif major_type == 'image':
attachment = MIMEImage(file.read(), _subtype=minor_type)
elif major_type == 'application':
attachment = MIMEApplication(file.read(), _subtype=minor_type)
elif major_type == 'audio':
attachment = MIMEAudio(file.read(), _subtype=minor_type)
# 修改附件名称
attachment_name = os.path.basename(attachment_path)
attachment.add_header('Content-Disposition', 'attachment', filename = ('gbk', '', attachment_name))
msg.attach(attachment)
# 得到格式化后的完整文本
full_text = msg.as_string()
# 发送邮件
self.smtp.sendmail(self.from_addr, eval_r(self.to_addrs), full_text)
# 退出
def quit(self):
self.smtp.quit()
if __name__ == '__main__':
mymail = MyMail('./mail.conf')
mymail.connect()
mymail.login()
mail_content = 'hello,亲,这是一封测试邮件,收到请回复^^ 2014'
mymail.send_mail('邮件标题--亲,收到一份邮件,请及时查收', mail_content, {'d:\\shouke.csv', 'd:\\2345haoya_3.1.1.9229.exe',
'd:\\shouke.ini','d:\\shouke.ini', 'd:\\test.mp3', 'd:\\test.png', 'd:\\report20150507204645.html',
'd:\\1 - 副本.sql'})
mymail.quit()
pdf版本及mimetypes.py下载地址:
http://pan.baidu.com/s/1P3C3W
基于Python实现邮件发送的更多相关文章
- Python 基于Python实现邮件发送
基于Python实现邮件发送 by:授客 QQ:1033553122 测试环境: Python版本:Python 2.7 注:需要修改mimetypes.py文件(该文件可通过文章底部的网盘分 ...
- 用Python实现邮件发送Hive明细数据
代码地址如下:http://www.demodashi.com/demo/12673.html 一.需求描述 客户需要每周周一接收特定的活动数据,生成Excel或是CSV文件,并通过邮件发送给指定接收 ...
- python实现邮件发送
实例补充: #**************************利用STMP自动发送邮件******************************import smtplibsmtp = smtp ...
- 如何用python进行邮件发送
使用Python调用邮件服务器发送邮件,使用的协议是SMTP(Simple Mail Transfer Protocol),下图为使用TCP/IP基于SMTP发送邮件的过程示意图: SMTP协议工作原 ...
- 基于Python的邮件检测工具
邮件快速检测工具 概要介绍 mmpi,是一款使用python实现的开源邮件快速检测工具库,基于community框架设计开发.mmpi支持对邮件头.邮件正文.邮件附件的解析检测,并输出json检测报告 ...
- python SMTP邮件发送(转载)
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
- python实现邮件发送完整代码(带附件发送方式)
实例一:利用SMTP与EMAIL实现邮件发送,带附件(完整代码) __author__ = 'Administrator'#coding=gb2312 from email.Header import ...
- Python SMTP邮件发送
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块: email负责构造邮件 ...
- 基于javaMail的邮件发送--excel作为附件
基于JavaMail的Java邮件发送 Author xiuhong.chen@hand-china.com Desc 简单邮件发送 Date 2017/12/8 项目中需要根据物料资质的状况实时给用 ...
随机推荐
- 《Head First Servlets & JSP》-6-会话管理-listener etc. demo
工程结构 上下文参数示例 示例程序展示了如何从上下文读取参数,并在上下文监听器中生成属性对象和在上下文中设置属性. 建立一个简单的JavaBean对象作为属性:Dog.java package com ...
- java代理模式实例讲解
下面这个是设计模式课上的例子: import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import ...
- Oracle中date转为timstam可以函数to_timestamp的方式来转化
data 转为timstam可以函数to_timestamp的方式来转化 Select to_timestamp('2018-02-27 09:48:28','yyyy-mm-dd hh24:mi:s ...
- 洛谷P3604 美好的每一天(莫队)
传送门 由乃的题还是一如既往的可怕…… 先放上原题解 标解: 一个区间可以重排成为回文串,即区间中最多有一个字母出现奇数次,其他的都出现偶数次 发现这个和 类似 这样如果一个区间的 和为 或者 ...
- CI框架源码学习笔记7——Utf8.php
愉快的清明节假期结束了,继续回到CI框架学习.这一节我们来看看Utf8.php文件,它主要是用来做utf8编码,废话不多说,上代码. class CI_Utf8 { /** * Class const ...
- 在PowerShell中操作SharePoint对象
1. 用PowerShell创建一个SharePoint内容对象创建一个自定义列表:$SPSite = New-Object Microsoft.SharePoint.SPSite("htt ...
- java webservices 以Axis1.4方式 调用sap webservice接口.
1. 首先需要下载Axis1.4 jar包,这个必应搜索大把,下载下来后把jar包加入eclipse工程项目路径中即可. 2. 下载mail.jar和activation.jar 俩个包.下载地址:h ...
- 非maven项目 idea project structure
原文链接:https://www.cnblogs.com/jajian/p/8081640.html 最近接手非maven项目,需要熟悉idea的project structure,以解决出现的环境报 ...
- P3978 [TJOI2015]概率论
\(\color{#0066ff}{ 题目描述 }\) 为了提高智商,ZJY开始学习概率论.有一天,她想到了这样一个问题:对于一棵随机生成的n个结点的有根二叉树(所有互相不同构的形态等概率出现),它的 ...
- Kbuild、Kconfig、make menuconfig、.config、Makefile之间的关系
今天突发奇想,想在这里分享下比喻分析Kbuild ---->去饭店吃饭的过程. 1.Kconfig --->饭店的菜单 2.条件编译选项--->菜单中的每一盘菜,可以选择这个菜的 ...