Python笔记(六) -- Python使用SMTP发送邮件

Python SMTP发送邮件 smtp发送文件 阅读详情

先附上代码:

# -*- coding: utf-8 -*-

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib

def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr(( \
        Header(name, 'utf-8').encode(), \
        addr.encode('utf-8') if isinstance(addr, unicode) else addr))

from_addr = raw_input('From: ')
password = raw_input('Password: ')
to_addr = raw_input('To: ')
smtp_server = raw_input('SMTP server: ')

msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
msg['From'] = _format_addr(u'Python爱好者 <%s>' % from_addr)
msg['To'] = _format_addr(u'管理员 <%s>' % to_addr)
msg['Subject'] = Header(u'来自SMTP的问候……', '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.quit()

设置msg[‘From’]、msg[‘To’]、msg[‘Subject’]用来显示正确的标题,收件人和发件人。
_format_addr()用来来格式化一个邮件地址。
注意不能简单地传入name addr@example.com,因为如果包含中文,需要通过Header对象进行编码。
msg[‘To’]接收的是字符串而不是list,如果有多个邮件地址,用,分隔即可。

如果需要发送带附件的邮件呢?
带附件的邮件可以看做包含若干部分的邮件:文本和各个附件本身,所以,可以构造一个MIMEMultipart对象代表邮件本身,然后往里面加上一个MIMEText作为邮件正文,再继续往里面加上表示附件的MIMEBase对象:

# 邮件对象:
msg = MIMEMultipart()
msg['From'] = _format_addr(u'Python爱好者 <%s>' % from_addr)
msg['To'] = _format_addr(u'管理员 <%s>' % to_addr)
msg['Subject'] = Header(u'来自SMTP的问候……', 'utf-8').encode()

# 邮件正文是MIMEText:
msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))

# 添加附件就是加上一个MIMEBase,从本地读取一个图片:
with open('/Users/michael/Downloads/test.png', 'rb') as f:
    # 设置附件的MIME和文件名,这里是png类型:
    mime = MIMEBase('image', 'png', filename='test.png')
    # 加上必要的头信息:
    mime.add_header('Content-Disposition', 'attachment', filename='test.png')
    mime.add_header('Content-ID', '<0>')
    mime.add_header('X-Attachment-Id', '0')
    # 把附件的内容读进来:
    mime.set_payload(f.read())
    # 用Base64编码:
    encoders.encode_base64(mime)
    # 添加到MIMEMultipart:
    msg.attach(mime)

原文地址:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832745198026a685614e7462fb57dbf733cc9f3ad000

Python3 SMTP发送邮件 基本概念与准备工作 SMTP协议 SMTP(Simple Mail Transfer Protocol)是用于发送邮件的标准协议,Python通过smtplib库实现SMTP通信,email库负责构建邮件内容67。 邮箱配置 QQ邮箱:需在设置中开启SMTP服务并获取授权码(非登录密码),步骤: 设置 → 账户 → 开启POP3/SMTP → 安全验证 → 获取16位授权码 授权码用于替代密码进行第三方登录24。 163邮箱:类似操作,需在安全设置中开启SMTP服务。 阅读详情

相关推荐

学习笔记(二十一)—— 使用SMTP发送电子邮件

一、常用的电子邮件协议 常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。下面分别对其进行简单介绍 1.1、SMTP协议 SMTP的全称是"SimpleMailTransferProtocol",即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP服务器就是遵循SMTP协议的发送

别呀的博客 1万+

python 发邮件 utf-8

import smtplib from operator import itemgetter, attrgetter from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart from email.utils i...

weixin_34013044的博客 208

讲解:在Python如何使用SMTP发送邮件

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 Python创建 SMTP 对象语法 import smtplib smtpObj = smtplib.SMTP( [host [,...

python零基础入门 1743

python 利用SMTP发送邮件

按照网上教程学了下发送邮件,结果一大批的坑。。。。终于成功了(没有安装sendmail) 1、准备工作:邮箱开通pop3/smtp服务,并记住其中的授权码 ,用例登录服务器的 2、SMTP中的重要知识点: smtp的端口号为25,MINETEXT用来设置发送的文本内容 MINETEXT('','plain','utf-8') 设置文本发送的格式 msg['Subjects'],msg[...

weixin_38961318的博客 704

使用python的smtp和email模块发送邮件

对于发送附件的邮件,附件对象filemime要设置2个头部,Content-Type, Content-Disposition, 前者是内容类型,后者是在邮件附件里显示的名字,通过filename去定义。总结:用python发送邮件,支持多种不同类型的邮件,有纯文本,有带html 或者压缩文件,当然其他的pdf, xlsx, doc文件作为附件也能发。发送邮件的整个过程是:连接邮箱服务器-->登录邮箱-->准备邮件数据-->添加邮件数据到邮件对象-->发送邮件。运行发送邮件代码后,邮箱收到了有附件的邮件。

xiaoCCD的博客 1007

python 使用smtp发送邮件

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 发送邮件前的准备工作: 上面说了是使用SMTP协议发送的邮件,所以需要先查看你的发件人邮箱是否有开启SMTP协议,如没有,则需要开...

qq_42543250的博客 4152

【python】基础知识巩固(九)

目录 ❤前景知识: ????代码讲解 ❤纯文本的邮件 ❤完善的邮件 ❤ 有附件的邮箱 ????加密SMTP ❤前景知识: SMTP是发送邮件的协议, Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件 比如我们构造一个简单的邮箱信息 from email.mime.text import MIMEText msg = MIMETex

heart_6662的博客 2080

python SMTP邮件发送

SMTP: 参考博客: https://blog.csdn.net/qq_37193537/article/details/82692678 https://www.cnblogs.com/givemelove/p/11097778.html 这里根据教程使用QQ邮箱作为收发端 栗子: import smtplib from email.mime.text import MIMEText from email.header import Header if __name__ == "__main

Janus 2649

Python中使用SMTP发送邮件以及POP收取邮件

Python中使用SMTP发送邮件以及POP收取邮件 假设我们自己的电子邮件地址是from@163.com,对方的电子邮件地址是to@sina.com(这里的地址虚拟的),现在我们用Outlook或者Foxmail之类的软件写好邮件,填上对方的Email地址,点“发送”,电子邮件就发出去了。这些电子邮件软件被称为...

张康的博客 3159

用python发送邮件 smtp

看了廖雪峰老师的教程,决定试试看能不能发送,试验用的是自己去QQ邮箱,首先要去QQ邮箱开启pop和SMTP服务才可以,下面是老师的代码块:from email.mime.text import MIMEText msg = MIMEText('hello, send by Python...', 'plain', 'utf-8') # 输入Email地址和口令: from_addr = raw_in

u011846143的博客 8729

Python3实现SMTP发送邮件

本文介绍如何使用Python3使用SMTP通过QQ邮箱发送邮件。   一、开启SMTP 在QQ邮箱顶部找到设置,然后进入邮箱设置-账号项。 在POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中,需要开启SMTP服务。 点击POP3/SMTP服务后的开启链接。会弹出验证密保的框。 打开QQ安全中心,输入动态密码。会弹出一个授权码,这个授权码相当...

比特实验室 2473

JAVA实现多邮件服务器发送邮件

在日常开发中,可能会遇到这样的开发需求:一些告警消息或者通知消息会使用邮件发送(针对一些消息重要但是对消息实时性要求不是特别高的场景),然而一些企业可能会有多个邮件服务器,每个邮件服务器每天只能发送指定数量的邮件,如何合理高效利用这些邮件服务器是开发者需要重点考虑的。由于SpringBoot项目对JavaMail进行了封装,方便开箱即用,然而此方案的缺陷在于只能配置一个邮件服务器地址,无法满足本文的需求。本文将基于上述需求,设计实现一种多邮件服务器发送邮件的功能,方便大家参考学习。

qq_33479841的博客 4025

阿里云SMTP邮件发送Python demon实践

阿里云SMTP邮件发送Python & Django实践 说明: python 3.6 Django 2.2 阿里云轻应用服务器 注意:轻应用服务器上80 端口和25端口是被占用,465端口被SSL加密,如果程序中没有开启SSL服务无法 发送 邮件最终导致邮件发送失败,具体实践请 看python$Django 的demon 阿里云邮件服务(了解) 邮件发送类型 说明:阿里云只允...

qq_24667243的博客 2081

python学习笔记 - 使用SMTP协议发送邮件

1、前序准备 1.1、SMTP SMTP(Simple Mail Transfer Protocol),英文翻译过来就是“简单邮件传输协议”。SMTP是一个相对简单的、基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本就会被传输。 SMTP协议的详细内容比较繁杂,本文不对其进行拓展,读者只需知道它是一种邮件的传输协议。用户在遵循这个协议的基础下可以实现邮件的收发功能。 2、登录邮箱 3、新建并编辑邮件 3.1、设置正文内容 3.2、设置附件内容 3

weixin_39997438的博客 2171

金蝶云星空初级实施认证考题

Q4.[单选题] (1.5分) 总账中的多账簿账表主要是基于什么进行查看的Q47.[多选题] (2.5分) 销售订单的收款计划页签勾选预收之后,预收控制环节可以控制哪些节点?

m0_51994557的博客 3120

用MATLAB从零实现六足机器人步态仿真:交替三角与波动步态保姆级教程

本文详细介绍了如何使用MATLAB从零实现六足机器人的两种经典步态仿真:交替三角支撑步态和波动步态。通过参数定义、相位设置、运动轨迹生成和三维可视化等步骤,帮助读者掌握六足机器人步态规划的核心技术。教程包含完整代码和详细解析,适合机器人爱好者和相关专业学生学习实践。

weixin_26765363的博客 227
上一篇: Python笔记(五) -- Python线程池
下一篇: Git学习总结
Aaron.com
博客等级 码龄17年 25粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值