python 邮件抄送是什么意思_python使用SMTP发邮件时使用Cc(抄送)和Bcc(密送)...
SMTP发送邮件的时候,并没有特殊的通信语句告诉邮件服务器 谁是主送,谁是抄送/密送,这三个角色都是以同样的方式告诉邮件服务器的,然后重点在邮件内容里。
邮件内容分为头和体两部分(就像http),头部包含了各种meta信息,其中说明了谁要用to,谁要cc,谁要bcc.
一个典型的带to和bcc的邮件发送过程debug日志如下:
send: 'ehlo E42.lan\r\n'
reply: b'250-smtp.qq.com\r\n'
reply: b'250-PIPELINING\r\n'
reply: b'250-SIZE 73400320\r\n'
reply: b'250-AUTH LOGIN PLAIN\r\n'
reply: b'250-AUTH=LOGIN\r\n'
reply: b'250-MAILCOMPRESS\r\n'
reply: b'250 8BITMIME\r\n'
reply: retcode (250); Msg: b'smtp.qq.com\nPIPELINING\nSIZE 73400320\nAUTH LOGIN PLAIN\nAUTH=LOGIN\nMAILCOMPRESS\n8BITMIME'
send: 'AUTH PLAIN xxxxxxxxxxxxxxxxxxxxxxxxx\r\n'
reply: b'235 Authentication successful\r\n'
reply: retcode (235); Msg: b'Authentication successful'
send: 'mail FROM: size=1412\r\n'
reply: b'250 Ok\r\n'
reply: retcode (250); Msg: b'Ok'
send: 'rcpt TO:\r\n'
reply: b'250 Ok\r\n'
reply: retcode (250); Msg: b'Ok'
send: 'rcpt TO:\r\n'
reply: b'250 Ok\r\n'
reply: retcode (250); Msg: b'Ok'
send: 'data\r\n'
reply: b'354 End data with .\r\n'
reply: retcode (354); Msg: b'End data with .'
data: (354, b'End data with .')
send: b'Content-Type: multipart/alternative; boundary="===============6519358828643049548=="\r\nMIME-Version: 1.0\r\nAccept-Language: zh-CN\r\nAccept-Charset: ISO-8859-1,utf-8\r\nFrom: support \r\nTo: xxxxx@126.com\r\nSubject: =?utf-8?b?5Yiw5pyf5o+Q6YaS?=\r\nBcc: xxxxx@smail.nju.edu.cn\r\n\r\n--===============6519358828643049548==\r\nContent-Type: text/html; charset="utf-8"\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: base64\r\n\r\nPCFET0N 这里省略一长串正文 tbD4K\r\n\r\n--===============6519358828643049548==--\r\n.\r\n'
reply: b'250 Ok: queued as \r\n'
reply: retcode (250); Msg: b'Ok: queued as'
data: (250, b'Ok: queued as')
send: 'quit\r\n'
reply: b'221 Bye\r\n'
reply: retcode (221); Msg: b'Bye'
下面是python代码:
#!/usr/bin/env python3
# coding: utf-8
#
# Created by dylanchu on 2019/7/5
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formataddr
class MyMailer(object):
def __init__(self, config: dict):
""" config['bcc'] should be a list """
self.Host = config['host']
self.Port = config['port']
self.Email = config['email']
self.Password = config['password']
self.From = config['from']
self.using_ssl = config['using_ssl']
self.Bcc = config['bcc']
if not isinstance(self.Bcc, list):
raise Exception('passed in "bcc" should be a list')
def send_mail(self, recipient, subject, content):
if recipient == '' or subject == '' or content == '':
raise Exception('recipient/subject/content should not be empty!!')
# Create message container - the correct MIME type is multipart/alternative.
msg = MIMEMultipart('alternative')
msg["Accept-Language"] = "zh-CN"
msg["Accept-Charset"] = "ISO-8859-1,utf-8"
msg['From'] = formataddr([self.From, self.Email])
msg['To'] = recipient
msg['Subject'] = subject
# msg format should be 'plain' or 'html'
body = MIMEText(content, 'html', 'utf-8')
msg.attach(body)
if self.Bcc and '@' in self.Bcc[0]:
msg['Bcc'] = ','.join(self.Bcc)
recipient = [recipient] + self.Bcc
try:
if self.using_ssl:
smtp = smtplib.SMTP_SSL(self.Host, self.Port, timeout=30)
else:
smtp = smtplib.SMTP(self.Host, self.Port, timeout=30)
smtp.set_debuglevel(1)
smtp.login(self.Email, self.Password)
smtp.sendmail(self.Email, recipient, msg.as_string())
smtp.quit()
print("email sent successfully")
except Exception as e:
print("email sent failed with error: %s" % e)
作为to和bcc看到的邮件都是这样的:
python 邮件抄送是什么意思_python使用SMTP发邮件时使用Cc(抄送)和Bcc(密送)...相关推荐
- python用smtp发邮件怎么抄送_python使用SMTP发邮件时使用Cc(抄送)和Bcc(密送)...
SMTP发送邮件的时候,并没有特殊的通信语句告诉邮件服务器 谁是主送,谁是抄送/密送,这三个角色都是以同样的方式告诉邮件服务器的,然后重点在邮件内容里. 邮件内容分为头和体两部分(就像http),头部 ...
- python凯撒密码详解_四十八、Python用smtp发邮件详解(163和QQ邮箱)
Python发邮件详解 一.利用163的smtp发送邮件 import smtplibfrom email.mime.text import MIMETextfrom email.header imp ...
- 【python起床服务】播放起床铃+给老板发邮件辞职
[python起床服务] 播放起床铃+给老板发邮件辞职 pyttsx3 播放音频 1. 播放 mp3 文件 2. 人声读文本 测试系统的语音包 播放音频的代码 发邮件辞职 1. 发送方邮箱开启smtp ...
- 配置GitLab 用smtp发邮件 (gitlab-6.7.3)
原 配置GitLab 用smtp发邮件 (gitlab-6.7.3) 摘要 先编辑 config/environments/production.rb 再编辑 config/initializers/ ...
- php发送邮件smtp源码,php下使用SMTP发邮件的代码
首页 > 网络编程 > PHP编程 > php技巧 > php下使用SMTP发邮件的代码 php下使用SMTP发邮件的代码 2008-01-10 20:37:22 作者: ph ...
- python使用SMTP发邮件时使用Cc(抄送)和Bcc(密送)
SMTP发送邮件的时候,并没有特殊的通信语句告诉邮件服务器 谁是主送,谁是抄送/密送,这三个角色都是以同样的方式告诉邮件服务器的,然后重点在邮件内容里. 邮件内容分为头和体两部分(就像http),头部 ...
- python读取邮件发送日期和时间_Python读取指定日期邮件的实例
背景:9月份有部分数据缺失,这部分数据在邮箱里,需要重新拉取,但是每天几百封邮件,总共有6.7万封邮件,使用stat()和retr(which)结合遍历很 耗时 基于如上背景,初始大致思路为: 使用二 ...
- python发邮件给女朋友代码_python代码实现发邮件
代码实现发邮件 Python的smtplib提供了一种很方便的途径发送电子邮件.它对smtp协议进行了简单的封装. 这里以QQ邮箱为例,首先要拿到授权码,这里登录你的QQ邮箱,在设置中,选择账号选项, ...
- python邮件合并的基本操作步骤_Python如何实现反向邮件合并功能
摘要:邮件合并是Office的一项功能,可便捷地批量生成文档,却无法从大量Word文档中汇总信息.结合实际应用,阐述基于Python语言对Word文档进行批量导入.读取其中的表格与段落.汇总信息至Ex ...
- 用python自动化发送邮件(python零基础也可以快速上手,自己发邮件哦)(*^ワ^*)
作为一个刚感还不算入门的python小白,我来分享一个我最经学到的一个python在高效率发送邮件这方面,欢迎大家一起讨论一起优化,同时也欢迎大家一起纠错.(想找原链接可以自行去翻阅哦!) 1.首先我 ...
最新文章
- 机械转行的都干啥去了?机械转行计算机难吗?
- KBMMW 4.80.00 发布
- ❗HTML引入CSS的三种常用方式汇总❗
- [mmu/cache]-cache的一些基本概念介绍
- hadoop3.1伪分布式部署
- Centos配置在线yum源
- MAC下快速打开指定目录
- 魅蓝2 android 8,魅蓝E2和魅蓝2哪个好
- 关于如何在网页中添加自己的QQ客服方法
- abaqus编写本构方程vumat_abaqusvumat子程序
- 黄聪:用于 Web 应用程序项目部署的 Web.config 转换语法
- Web.config中注册用户控件和自定义控件
- DataFrame对比RDD
- 【虎牙直播源】浏览器抓取真实直播源地址(纯前端JS解析源码)
- 鼠标移入显示图片案例
- 微信短信显示服务器解包异常,图解微信常见帐号异常处理办法
- guided filter
- 学习光线追踪(16)---折射计算[1]
- Java前叉夹器_新手知识:为什么说公路直装夹器更好呢?
- 聊聊外包团队的高效管理机制
热门文章
- 云服务器申请退款,腾讯云服务器申请自助退款的操作流程及图文教程
- 计算机文件丢失系统无法启动,windows7文件丢失无法启动怎么修复_win7系统显示文件丢失无法启动修复方法-win7之家...
- git生成sshkey 并添加SSH key
- 聊聊运营商对UDP的QoS限制和应对
- arm模拟器手机版_在 Android 模拟器上运行 ARM 应用
- Poj 2456 Aggressive cows
- c语言抖动算法,游戏中抖动(振动)算法的实现
- 北京等保测评机构项目测评收费价格标准参考
- 以debug模式启动PostgreSQL服务
- 2017年语义理解总结(一)