目录
1. 基础知识
1.1. SSH(Secure Shell)协议
1.2. SMTP(Simple Mail Transfer Protocol)协议
1.3. SSH协议与SMTP协议之间的关系
2. QQ邮箱设置
2.1. 开启SMTP服务
2.2. 编写脚本
3. 测试成功
1. 基础知识
邮件的发送过程中会用到SSH和SMTP协议。SSH(Secure Shell)协议和SMTP(Simple Mail Transfer Protocol)协议是两种不同的网络协议,它们在网络通信中扮演着不同的角色。下面是对两者的简要介绍以及它们之间的关系:
1.1. SSH(Secure Shell)协议
SSH是一种网络协议,用于加密方式远程登录和操作计算机系统。SSH提供了一种安全的方法,通过不安全的网络环境对服务器进行访问和管理。SSH协议常用于远程命令执行、文件传输等,它通过端口22进行通信。
1.2. SMTP(Simple Mail Transfer Protocol)协议
SMTP是一种用于发送电子邮件的协议。它定义了邮件服务器之间如何互相发送和接收邮件的规则。SMTP通常只用于发送邮件,而接收邮件则使用POP3(Post Office Protocol version 3)或IMAP(Internet Message Access Protocol)。SMTP通常使用端口25、587或465(加密时)。
1.3. SSH协议与SMTP协议之间的关系
SSH和SMTP协议在功能上没有直接的关系,它们分别用于不同的目的。SSH用于安全的远程管理,而SMTP用于邮件传输。不过,SSH可以与SMTP协议结合使用,提供一些额外的安全性。例如:
1)SSH隧道(Tunneling):可以通过SSH隧道将SMTP流量加密,从而在不安全的网络中安全地发送电子邮件。这种方式可以防止中间人攻击和邮件内容泄露。
2)SSH端口转发:可以使用SSH的端口转发功能将本地端口映射到远程的SMTP服务器上的端口,从而通过SSH连接来发送邮件,增加了传输过程的安全性。
3)在使用SSH连接到远程服务器后,可以在该服务器上配置和管理SMTP服务,比如安装邮件服务器软件、配置邮件路由规则等。
2. QQ邮箱设置
2.1. 开启SMTP服务
进入qq邮箱主页,选择设置 - 账号 - 开启服务(需要绑定的手机验证) - 获取授权码
2.2. 编写脚本
帮助系统如何设置POP3/SMTP的SSL加密方式?帮助系统
实验目的:利用qq邮箱给126邮箱发送邮件;
需要信息:
1)2.1章节开启SMTP服务的qq邮箱更新到下面;
2)接收人的邮箱;
3)授权码;
更新脚本:将上面信息更新到下面脚本即可实现邮件发送;
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# QQ邮箱SMTP服务器地址
smtp_server = 'smtp.qq.com'
# 你的QQ邮箱地址
sender_qq_mail = 'xxxxxxxxx@qq.com'
# 收件人邮箱地址
receiver_email = ['xxxxxxxxx@126.com']
# QQ邮箱的SMTP授权码
smtp_password = 'xxxxxxxxx'
# 邮件标题
subject = '测试邮件'
# 邮件正文
content = '这是一封测试邮件,发送自Python脚本。'
# 创建一个MIMEText对象,参数分别是邮件正文、文本格式、编码
message = MIMEText(content, 'plain', 'utf-8')
# 设置邮件的发送者
message['From'] = 'Give<xxxxxxxxx@qq.com>' #Header(sender_qq_mail, 'utf-8')
# 设置邮件的接收者
message['To'] = 'Give<xxxxxxxxx@126.com>' #Header(receiver_email, 'utf-8')
# 设置邮件标题
message['Subject'] = Header(subject, 'utf-8')
try:
# 创建SMTP对象
server = smtplib.SMTP_SSL(smtp_server, 465)
# 设置调试级别,可以看到详细的发送日志
server.set_debuglevel(1)
# 登录QQ邮箱服务器
server.login(sender_qq_mail, smtp_password)
# 发送邮件
server.sendmail(sender_qq_mail, [receiver_email], message.as_string())
print('邮件发送成功')
except smtplib.SMTPException as e:
print('邮件发送失败', e)
finally:
# 退出SMTP服务器
server.quit()