目录
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 smtplibfrom email.mime.text import MIMETextfrom 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()