赞
踩
smtplib 是 Python 的标准库之一,用于发送电子邮件。它提供了一个简单的接口来连接到 SMTP(Simple Mail Transfer Protocol)服务器,并通过该服务器发送电子邮件。
email 是 Python 的标准库之一,用于处理电子邮件相关的操作。它提供了一组类和方法,用于创建、解析和操作电子邮件消息。
'''
host:SMTP 服务器的主机名或 IP 地址。
port:SMTP 服务器的端口号。默认为 25。
local_hostname:可选参数,用于标识本地主机名。如果未指定,则默认使用计算机的主机名。
timeout:可选参数,设置连接超时时间(以秒为单位)。默认为 None,表示没有超时限制。
source_address:可选参数,指定源地址。如果计算机有多个网络接口,可以使用此参数指定要使用的特定接口。
'''
import smtplib
# SMTP 服务器信息
smtp_server = 'smtp.qq.com'
smtp_port = 587
smtp_user = 'shaofengma88@qq.com'
smtp_password = 'eyzstypjjtwbbebd'
try:
# 连接到 SMTP 服务器
with smtplib.SMTP(smtp_server, smtp_port) as smtp:
print('smtp服务器连接成功')
# 登录到 SMTP 服务器
smtp.login(smtp_user, smtp_password)
print('邮件发送成功')
except Exception as e:
print(e)
host:LMTP 服务器的主机名或 IP 地址。
port:LMTP 服务器的端口号。
local_hostname:可选参数,用于指定本地主机名,用于在与服务器建立连接时进行标识。如果未指定,将使用默认的本地主机名。
source_address:可选参数,用于指定客户端的源地址。如果未指定,将使用默认的源地址。
timeout:可选参数,用于指定与服务器建立连接和发送/接收数据的超时时间。
host:SMTP 服务器的主机名或 IP 地址。
port:SMTP 服务器的端口号。
local_hostname:可选参数,用于指定本地主机名,用于在与服务器建立连接时进行标识。如果未指定,将使用默认的本地主机名。
keyfile:可选参数,用于指定客户端的私钥文件路径。如果服务器要求客户端提供私钥进行身份验证,可以指定此参数。
certfile:可选参数,用于指定客户端的证书文件路径。如果服务器要求客户端提供证书进行身份验证,可以指定此参数。
timeout:可选参数,用于指定与服务器建立连接和发送/接收数据的超时时间。
source_address:可选参数,用于指定客户端的源地址。如果未指定,将使用默认的源地址。
context:可选参数,用于传递 SSL/TLS 相关的上下文对象。如果未指定,将使用默认的上下文。
1.import email
'''
_maintype:部分的主类型,表示部分的一般类别,例如 "text"、"image"、"audio" 等。
_subtype:部分的子类型,表示部分的具体类型,例如 "plain"、"html"、"jpeg"、"mp3" 等。
policy:可选参数,用于指定部分的策略对象,用于处理部分的编码和字符集等信息。
**_param:可选参数,用于指定部分的其他头部字段。可以使用关键字参数的形式传递,例如 charset="utf-8"、name="attachment.txt" 等。
From:发件人的电子邮件地址。
To:收件人的电子邮件地址。
Cc:抄送的电子邮件地址。
Bcc:密送的电子邮件地址。
Subject:邮件主题。
Date:邮件发送的日期和时间。
Reply-To:指定回复邮件的地址。
Message-ID:邮件的唯一标识符。
In-Reply-To:指定邮件回复的原始邮件标识符。
Content-Type:指定消息的内容类型。
Content-Disposition:指定消息的内容处理方式。
Content-Transfer-Encoding:指定消息的内容传输编码方式。
Importance:指定邮件的重要性级别。
X-Priority:指定邮件的优先级。
X-Mailer:指定用于发送邮件的邮件客户端或程序的标识字符串
Name
Charset
'''
MIMEBase(_maintype, _subtype, *, policy=None, **_param)
'''
_text:邮件的文本内容。
_subtype:可选参数,指定邮件的子类型,默认为 'plain',表示纯文本。其他常见的子类型包括 'html'(HTML 格式)和 'xml'(XML 格式)等。
_charset:可选参数,指定邮件的字符集,默认为 None,表示使用默认的字符集。
policy:可选参数,指定邮件的策略对象,默认为 None,表示使用默认的策略
'''
MIMEText( _text, _subtype='plain', _charset=None, *, policy=None)
'''
audiodata:音频数据的字节串。这是必需的参数,用于指定音频消息的内容。
_subtype:可选参数,用于指定音频消息的子类型。默认值为 None,表示将根据文件名的扩展名来确定子类型。
_encoder:可选参数,用于指定编码器函数,将音频数据编码为字符串。默认值为 encoders.encode_base64,表示使用 Base64 编码。
policy:可选参数,用于指定策略对象,用于控制生成的 MIME 部分的行为。默认值为 None,表示使用默认策略。
**_params:可选参数,用于指定其他 MIME 头部字段的参数。您可以通过关键字参数的形式传递这些参数
'''
MIMEAudio(_audiodata, _subtype=None,_encoder=encoders.encode_base64, *, policy=None, **_params)
'''
_data:要作为附件添加到 MIME 消息的数据。通常是一个字节字符串(bytes)。
_subtype:附件的 MIME 子类型。默认为 'octet-stream',表示通用的二进制数据流。您可以根据实际情况指定其他子类型,例如 'pdf'、'zip' 等。
_encoder:用于编码附件数据的编码器。默认为 encoders.encode_base64,表示使用 Base64 编码。通常无需更改此参数。
policy:可选参数,用于指定邮件策略。默认为 None,表示使用默认策略。
**_params:可选参数,用于指定附件的其他参数。这些参数将作为附件的 MIME 头部字段添加到消息中,例如 filename、Content-Disposition 等。
'''
MIMEApplication(_data, _subtype='octet-stream', _encoder=encoders.encode_base64, *, policy=None, **_params)
'''
_imagedata:要作为附件添加到 MIME 消息的图像数据。通常是一个字节字符串(bytes)。
_subtype:附件的 MIME 子类型。默认为 None,表示根据 _imagedata 推断子类型。如果 _imagedata 是 JPEG 图像数据,则子类型将设置为 'jpeg',如果是 PNG 图像数据,则子类型将设置为 'png'。您也可以手动指定子类型,例如 'jpeg'、'png' 等。
_encoder:用于编码图像数据的编码器。默认为 encoders.encode_base64,表示使用 Base64 编码。通常无需更改此参数。
policy:可选参数,用于指定邮件策略。默认为 None,表示使用默认策略。
**_params:可选参数,用于指定附件的其他参数。这些参数将作为附件的 MIME 头部字段添加到消息中,例如 filename、Content-Disposition 等。
'''
MIMEImage(_imagedata, _subtype=None,_encoder=encoders.encode_base64, *, policy=None, **_params)
'''
_subtype:多部分消息的 MIME 子类型。默认为 'mixed',表示混合类型的多部分消息。其他常见的子类型包括 'alternative'(用于包含多个表示相同内容的不同格式)和 'related'(用于嵌入图像或其他资源的多部分消息)。您可以根据需要设置适当的子类型。
boundary:多部分消息的边界字符串。默认为 None,表示将自动生成一个边界字符串。通常无需手动设置边界字符串,除非您有特殊要求。
_subparts:可选参数,用于指定消息的子部分。可以传入一个部分列表,将这些部分添加到多部分消息中。默认为 None,表示没有子部分。
policy:可选参数,用于指定邮件策略。默认为 None,表示使用默认策略。
**_params:可选参数,用于指定多部分消息的其他参数。这些参数将作为消息的 MIME 头部字段添加到消息中,例如 From、To、Subject 等
'''
MIMEMultipart(_subtype='mixed', boundary=None, _subparts=None,policy=None,**_params)
s:要编码或解码的字符串(默认为 None)。
charset:字符集(编码方案)用于编码或解码字符串(默认为 None)。
maxlinelen:生成的编码字符串的最大行长度(默认为 None)。
header_name:头部字段的名称(默认为 None)。
continuation_ws:用于多行头部字段的换行缩进空格(默认为 ' ')。
errors:指定在编码或解码过程中遇到错误时的处理方式(默认为 'strict')。
decoded_seq:一个已解码的序列,可以是字符串或元组的列表。
maxlinelen:生成的编码字符串的最大行长度(默认为 None)。
header_name:头部字段的名称(默认为 None)。
continuation_ws:用于多行头部字段的换行缩进空格(默认为 ' ')。
outfp:表示输出文件对象(file-like object),用于将生成的电子邮件文本写入文件。可以是文件对象、网络套接字等。如果要将电子邮件文本写入文件,可以使用 open() 函数创建一个文件对象,并将其传递给 Generator 的构造函数。
mangle_from_:一个布尔值,用于控制是否对 "From" 头部进行修整(mangle)。默认情况下,Generator 类会根据需要对 "From" 头部进行修整,以确保邮件地址的正确格式。
maxheaderlen:一个整数值,用于限制生成的每个头部的最大长度。如果头部的长度超过该值,将会进行折行处理。默认情况下,没有长度限制。
policy:一个 email.policy.Policy 对象,用于控制生成的电子邮件文本的规则。如果不提供该参数,默认使用 email.policyEmailMessage.default 策略。
msg:Message对象
unixfrom 参数用于控制是否在生成的文本中包含 Unix From 行。
linesep 参数用于指定行分隔符,如果未提供,则使用系统默认的行分隔符
from email.message import EmailMessage
from email.generator import Generator
# 创建 EmailMessage 对象
message = EmailMessage()
message["Subject"] = "Hello"
message["From"] = "sender@example.com"
message["To"] = "recipient@example.com"
message.set_content("This is the email content.")
with open('email.txt','a+') as file:
# 创建 Generator 对象,并将 Message 对象转换为字符串
generator = Generator(file)
# 使用 write() 方法将自定义文本写入生成的电子邮件文本
generator.write("Custom header: X-Custom-Header\n")
# 使用 flatten() 方法将 Message 对象转换为电子邮件文本
generator.flatten(message)
charset 参数是字符集的名称。
codecname 参数是编码的名称。
header_enc 参数是用于编码邮件头部的编码名称。
body_enc 参数是用于编码邮件正文的编码名称。
output_charset 参数是输出字符集的名称。
alias 参数是别名。
canonical 参数是对应的规范字符集名称。
msg 是邮件消息对象。
*args 和 **kw 额外的参数或关键字参数,用于指定获取内容时的一些选项。
msg 是邮件消息对象。
obj 是要设置的内容。
*args 和 **kw 额外的参数或关键字参数,用于指定设置内容时的一些选项。
key 一个标识符,用于指定要处理的内容类型。
handler 一个函数或者对象,用于处理相应类型的内容。
typekey 可能是一个标识符,用于指定要处理的内容类型。
handler 可能是一个函数或者对象,用于处理相应类型的内容的设置。
'''状态码'''
250:命令执行成功。
500:命令语法错误,参数不正确。
501:命令参数格式错误。
504:命令参数格式错误,主机名或域名不正确。
'''状态码'''
211:系统状态或帮助响应。
214:帮助消息
'''状态码'''
250:命令执行成功。
251:用户非本地,将转发到其他邮件服务器。
550:命令执行失败,无法找到接收者地址。
'''状态码'''
250:命令执行成功。
'''状态码'''
250:命令执行成功,地址有效。
251:用户非本地,将转发到其他邮件服务器。
550:命令执行失败,地址无效。
'''状态码'''
250:命令执行成功,服务器支持的扩展功能列表。
500:命令语法错误,参数不正确。
501:命令参数格式错误。
504:命令参数格式错误,主机名或域名不正确
'''状态码'''
250:命令执行成功。
552:命令执行失败,邮件大小超过服务器限制。
'''状态码'''
250:命令执行成功,返回列表成员。
550:命令执行失败,无法展开列表
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# SMTP 服务器信息
smtp_server = 'smtp.qq.com'
smtp_port = 587
smtp_user = '5678987@qq.com'
smtp_password = 'eyzstypjjtwbbebd'
# 发件人邮箱和密码
sender = '5678987@qq.com'
# 收件人邮箱
receiver = '5678987@qq.com'
# 邮件内容
subject = 'python内置模块发送邮件'
content = '我是python email'
message = MIMEText(content, 'plain', 'utf-8')
message['From'] = Header(sender)
message['To'] = Header(receiver)
message['Subject'] = Header(subject)
try:
# 连接到 SMTP 服务器
with smtplib.SMTP(smtp_server, smtp_port) as smtp:
print('smtp服务器连接成功')
# 开启安全传输层(如果服务器支持)
smtp.starttls()
# 登录到 SMTP 服务器
smtp.login(smtp_user, smtp_password)
smtp.sendmail(sender, receiver, message.as_string())
print('邮件发送成功')
except Exception as e:
print(e)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。