Python SMTP邮件:简单、方便的发送邮件方式

一、SMTP协议的简介

SMTP(Simple Mail Transfer Protocol)是一种邮件传输协议,用于发送、路由和接收电子邮件消息。

在发送邮件时,需要先把邮件从发件人的邮件服务器发送至收件人的邮件服务器,再由收件人的邮件客户端下载。SMTP协议就是在发件人和收件人之间传递邮件的过程中发挥作用。

Python内置smtplib模块可以方便地使用SMTP协议进行邮件发送。

二、SMTP邮件的基本用法

下面是一个使用Python发送邮件的基本示例:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 邮件内容
mail_content = '这是一封测试邮件。'

# 创建一个MIMEText对象,表示邮件正文
message = MIMEText(mail_content, 'plain', 'utf-8')
# 设置邮件主题
message['Subject'] = Header('测试邮件', 'utf-8')
# 设置发件人
message['From'] = 'sender@163.com'
# 设置收件人
message['To'] = 'receiver@qq.com'

# 邮箱账号和密码
mail_user = 'sender@163.com'
mail_password = 'password'

# 发送邮件
smtp_server = 'smtp.163.com'
smtp_port = 25
server = smtplib.SMTP(smtp_server, smtp_port)
server.login(mail_user, mail_password)
server.sendmail(mail_user, [message['To']], message.as_string())
server.quit()

以上代码中,使用email模块构建了一个邮件对象message,包括邮件正文、主题、发件人和收件人。然后使用smtplib模块连接邮件服务器并发送邮件。

三、SMTP邮件的进阶用法

1. 发送附件

除了文本内容以外,我们还可以发送附件。具体做法是将文件读取为二进制内容,再使用email模块构建MIMEBase对象,并将其添加到MIMEMultipart对象中。

下面是一个发送带有附件的邮件示例:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import COMMASPACE
from email import encoders
from email.header import Header
import os

# 邮件内容和主题
mail_content = '这是一封带有附件的测试邮件。'
subject = '测试邮件'

# 发件人和收件人
from_addr = 'sender@163.com'
to_addrs = ['receiver@qq.com']

# 发送附件
file_path = '附件文件路径'
filename = '附件名称'
file = open(file_path, 'rb')
file_data = file.read()
file.close()
part = MIMEBase('application', 'octet-stream')
part.set_payload(file_data)
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment', filename=('gb2312', '', filename))

# 邮件对象
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = COMMASPACE.join(to_addrs)
msg['Subject'] = Header(subject, 'utf-8')
msg.attach(MIMEText(mail_content, 'plain', 'utf-8'))
msg.attach(part)

# 发送邮件
smtp_server = 'smtp.163.com'
smtp_port = 25
smtp_user = 'sender@163.com'
smtp_password = 'password'
server = smtplib.SMTP(smtp_server, smtp_port)
server.login(smtp_user, smtp_password)
server.sendmail(from_addr, to_addrs, msg.as_string())
server.quit()

2. 发送HTML邮件

如果需要发送HTML格式的邮件,只需要在MIMEText对象中指定’mimetype’为text/html即可。

下面是一个发送HTML邮件的示例:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# HTML内容
mail_content = '<h1>这是一封测试邮件</h1><p>邮件正文内容。</p>'

# 邮件对象
message = MIMEText(mail_content, 'html', 'utf-8')
message['Subject'] = Header('测试邮件', 'utf-8')
message['From'] = 'sender@163.com'
message['To'] = 'receiver@qq.com'

# 发送邮件
smtp_server = 'smtp.163.com'
smtp_port = 25
mail_user = 'sender@163.com'
mail_password = 'password'
server = smtplib.SMTP(smtp_server, smtp_port)
server.login(mail_user, mail_password)
server.sendmail(mail_user, [message['To']], message.as_string())
server.quit()

3. 发送带图片的邮件

如果需要在邮件中嵌入图片,需要使用cid和Content-ID进行引用。具体做法是将图片读取为二进制内容,然后使用MIMEImage对象构建相关内容。

下面是一个发送带图片的邮件的示例:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
from email.header import Header

# 邮件内容和主题
mail_content = '<h1>这是一封带图片的测试邮件</h1><p><img src="cid:image1"></p>'
subject = '测试邮件'

# 发件人和收件人
from_addr = 'sender@163.com'
to_addrs = ['receiver@qq.com']

# 读取图片和邮件内容
image_path = '图片文件路径'
image_file = open(image_path, 'rb').read()
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = ','.join(to_addrs)
msg['Subject'] = Header(subject, 'utf-8')
msg.attach(MIMEText(mail_content, 'html', 'utf-8'))

# 添加图片
image = MIMEImage(image_file)
image.add_header('Content-ID', '<image1>')
msg.attach(image)

# 发送邮件
smtp_server = 'smtp.163.com'
smtp_port = 25
smtp_user = 'sender@163.com'
smtp_password = 'password'
server = smtplib.SMTP(smtp_server, smtp_port)
server.login(smtp_user, smtp_password)
server.sendmail(from_addr, to_addrs, msg.as_string())
server.quit()

四、总结

Python SMTP邮件是一种简单、方便的发送邮件方式。使用Python内置的smtplib和email模块,可以快速实现邮件的发送。不仅可以发送文本邮件,还可以发送带有附件、HTML内容和图片的邮件。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/301737.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-30 16:09
下一篇 2024-12-30 16:09

相关推荐

  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • IDEA Java发送邮件出现错误解决方案

    IDEA Java是一款常用的Java开发工具,很多开发者都使用它来开发Java应用程序。然而,在使用IDEA Java发送邮件时,有可能会出现一些错误。本文将从多个方面对该错误进…

    编程 2025-04-29
  • Python海龟代码简单画图

    本文将介绍如何使用Python的海龟库进行简单画图,并提供相关示例代码。 一、基础用法 使用Python的海龟库,我们可以控制一个小海龟在窗口中移动,并利用它的“画笔”在窗口中绘制…

    编程 2025-04-29
  • Python樱花树代码简单

    本文将对Python樱花树代码进行详细的阐述和讲解,帮助读者更好地理解该代码的实现方法。 一、简介 樱花树是一种图形效果,它的实现方法比较简单。Python中可以通过turtle这…

    编程 2025-04-28
  • Python大神作品:让编程变得更加简单

    Python作为一种高级的解释性编程语言,一直被广泛地运用于各个领域,从Web开发、游戏开发到人工智能,Python都扮演着重要的角色。Python的代码简洁明了,易于阅读和维护,…

    编程 2025-04-28
  • 用Python实现简单爬虫程序

    在当今时代,互联网上的信息量是爆炸式增长的,其中很多信息可以被利用。对于数据分析、数据挖掘或者其他一些需要大量数据的任务,我们可以使用爬虫技术从各个网站获取需要的信息。而Pytho…

    编程 2025-04-28
  • 如何制作一个简单的换装游戏

    本文将从以下几个方面,为大家介绍如何制作一个简单的换装游戏: 1. 游戏需求和界面设计 2. 使用HTML、CSS和JavaScript开发游戏 3. 实现游戏的基本功能:拖拽交互…

    编程 2025-04-27
  • Guava Limiter——限流器的简单易用

    本文将从多个维度对Guava Limiter进行详细阐述,介绍其定义、使用方法、工作原理和案例应用等方面,并给出完整的代码示例,希望能够帮助读者更好地了解和使用该库。 一、定义 G…

    编程 2025-04-27
  • 制作一个简单的管理系统的成本及实现

    想要制作一个简单的管理系统,需要进行技术选型、开发、测试等过程,那么这个过程会花费多少钱呢?我们将从多个方面来阐述制作一个简单的管理系统的成本及实现。 一、技术选型 当我们开始思考…

    编程 2025-04-27

发表回复

登录后才能评论