[Python]代码

#_*_encoding:utf-8_*_

#script for python3.2

#-------------------------------------------------------------------------------

# Name: 发送邮件

# Purpose:

#

# Author: QiuChangJie

#

# Created: 10/09/2012

# Copyright: (c) cj.qiu 2012

# Licence:

#-------------------------------------------------------------------------------

import os

import smtplib

import mimetypes

from email.mime.multipart import MIMEMultipart

from email.mime.base import MIMEBase

from email.mime.text import MIMEText

from email.mime.audio import MIMEAudio

from email.mime.image import MIMEImage

from email.encoders import encode_base64

MAIL_163_USER = "[email protected]"

MAIL_163_PWD = "test"

MAIL_YEAH_USER = "[email protected]"

MAIL_YEAH_PWD = "test"

MAIL_GOOGLE_HOST = "smtp.gmail.com"

MAIL_163_HOST = "smtp.163.com"

MAIL_YEAH_HOST = "smtp.yeah.com"

RECIPIENT = ["[email protected]"]

ATTACHMENTS = []

class QMail():

def __init__(self, user, pwd, host):

self.mail_user = user

self.mail_pwd = pwd

self.mail_server = smtplib.SMTP()

self.mail_server.connect(host)

self.mail_server.ehlo()

self.mail_server.starttls()

self.mail_server.ehlo()

self.mail_server.login(self.mail_user, self.mail_pwd)

def __del__(self):

self.mail_server.close()

def send_mail(self, recipient, subject, text, att_files=[]):

msg = MIMEMultipart()

msg["From"] = self.mail_user

msg["Subject"] = subject

msg["To"] = ",".join(recipient)

msg.attach(MIMEText(text))

if len(att_files) > 0:

for file_name in att_files:

msg.attach(self.get_attachment(file_name))

self.mail_server.sendmail(self.mail_user, recipient, msg.as_string())

def get_attachment(self, file_name):

content_type, encoding = mimetypes.guess_type(file_name)

if content_type is None or encoding is not None:

content_type = "application/octet-stream"

main_type, sub_type = content_type.split('/', 1)

file = open(file_name, "rb")

if main_type == "text":

attachment = MIMEText(file.read())

elif main_type == 'message':

attachment = email.message_from_file(file)

elif main_type == 'image':

attachment = MIMEImage(file.read(), _subType=sub_type)

elif main_type == 'audio':

attachment = MIMEAudio(file.read(), _subType=sub_type)

else:

attachment = MIMEBase(main_type, sub_type)

attachment.set_payload(file.read())

encode_base64(attachment)

file.close()

attachment.add_header('Content-Disposition', 'attachment', filename=os.path.basename(file_name))

return attachment

def test():

mail = QMail("[email protected]", "test", MAIL_163_HOST)

mail.send_mail(["[email protected]"], "sub_test", "text_test", r"G:\WorkSpace\Doing\CMMI文档模板.dot")

if __name__ == '__main__':

test()

python发邮件详解_python实现发送邮件详解相关推荐

  1. python自动发邮件富文本_Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式...

    1. 前言 发送邮件,我们在平时工作中经用到,做为测试人员,在自动化测试中用的也比较多,需要发送邮件给某领导 SMTP是Python默认的邮件模块,可以发送纯文本.富文本.HTML 等格式的邮件 今天 ...

  2. python 发邮件 无需密码_Django实现发送邮件找回密码功能

    在各大网站上,一定都遇到过找回密码的问题,通常采用的方式是通过发送带有验证码的邮件进行身份验证,本文将介绍通过Django实现邮件找回密码功能. 找回密码流程 功能流程: 1.首先在用户登录界面,添加 ...

  3. python发邮件详解 -- smtplib和email模块

    文章目录 python发邮件详解,-->smtplib和email模块 1.python发邮件所需要的基础包 2.smtplib的用法 3.email模块的详细理解和使用 A.MIMEText对 ...

  4. python发邮件详解,smtplib和email模块详解

    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理.SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目 ...

  5. python 发邮件 timeout_python发送邮件

    一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 1.smtplib模块 smtplib.SMTP([host[, port[, loca ...

  6. python发邮件有什么意思_python发邮件要装什么

    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理.SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目 ...

  7. python发邮件图片太长显示不出来_小白入门,用python 发送定时邮件,将Dataframe转为邮件正文,链接显示为图片...

    在实际工作中,我们常常会遇到定时发送邮件的任务,基于我的实践,分享给大家,也许一篇文章写不完,就先列个目录. 本文想要解决的问题: 用python构造一封邮件,并设置定时发送出去.往往,这只是最低级的 ...

  8. Python发邮件时报错 554

    Python发邮件时报错 554 错误: smtplib.SMTPDataError: (554, b'DT:SPM 163 smtp10,DsCowAA3h9_QbgZXI9_fCQ--.713S2 ...

  9. 网易163邮箱开通smtp邮件协议后用python发邮件

    网易SMTP开通及python发邮件 1.登录 2.设置 开启服务 短信验证开启服务 得到授权码 3.发文本代码 4.发html代码 1.登录 网易邮箱登录注册地址 https://email.163 ...

最新文章

  1. 文本框可编辑查看页面
  2. koa连接mysql_CentOS 环境 Node + Koa2 连接 MySQL (ECS系列三)
  3. Uber无人车撞人视频公布,究竟哪儿出问题了?
  4. Java遇见HTML——JSP篇之JSP指令与动作元素
  5. iextensionunit类_Java ICompilationUnit.reconcile方法代码示例
  6. 并发测试工具_软件测试工程师都在用哪些测试工具?
  7. Mathematica图片局部变色
  8. ant压缩和解压缩工具类
  9. html安卓手机打开后只有半屏,宽度设置100%在移动端时变成一半
  10. linux 安装python3.8的几种方法
  11. 作为一名程序员,我一直为中国的软件产业感到苦恼。
  12. python工资这么高为什么不学-为什么那么多人想学 Python?
  13. 【KDD 2020】会话推荐系统新进展:基于互信息最大化的多知识图谱语义融合
  14. 字符串转数组和数组转字符串
  15. FireMonkey 跨平台框架下的图片缩放和 JPEG 编码
  16. 什么软件可以截取电视剧视频片段?这3款软件极易上手!
  17. nand flash基础——读写擦操作
  18. scons 手册_SCons用户手册 | 学步园
  19. 2010年《杨卫华谈微博架构》视频摘抄
  20. 【日语入门】促音的基本规则

热门文章

  1. Vue源码: 关于vm.$watch()内部原理
  2. CentOS6.7上使用FPM打包制作自己的rpm包
  3. 菜鸟也学hadoop(1)_搭建单节点的hadoop
  4. 第38天:运算符、字符串对象常用方法
  5. 60. Spring Boot写后感【从零开始学Spring Boot】
  6. Objective-C马路成魔【14-关键C语言功能】
  7. 有些事情现在不做一辈子就都不会做了
  8. 监理公司的核心竞争力
  9. PAZU 是4Fang 为配合“四方在线”软件于2004年开发的WEB打印控件,适用于各种WEB软件项目的打印。...
  10. 我的blog开张了,希望大家能多多赏光啊