用imap/smtp在win10命令行中收发邮件

本文介绍如何通过Telnet服务手动发送邮件,包括在Win10上启用Telnet,配置QQ邮箱的SMTP服务,以及使用Python实现邮件发送的完整过程。同时,探讨了Telnet的安全隐患及IMAP/POP3协议的使用。
部署运行你感兴趣的模型镜像

计网知识的小实践

1.首先打开win10的telnet服务

在这里插入图片描述

2.打开邮箱(qq)的SMTP服务

获得授权码后记下来,待会输入的密码填这个
在这里插入图片描述

3.打开win10的控制台(或者PowerShell)

4.输入命令(发邮件)

telnet smtp.qq.com 25

在这里插入图片描述

helo smtp

算是建立TCP连接
在这里插入图片描述
接着登录

auth login

输入用户名:base64转码后的用户名(注意指@前的部分)
输入密码:base64转码后的密码

base在线加密

小提示:在命令行内用鼠标右键粘贴

在这里插入图片描述
到这里就登录成功了

设置发送方邮箱:mail from: yourEmail@qq.com
设置收件方邮箱:rcpt to: recipientsEmail@qq.com
标识传数据:date
邮件:
from:发件人(可不填)
to:收件人(可不填)
subject:主题
空一行开始输入正文,用单独一行的 . 结束

在这里插入图片描述
在命令行中输入错误是改不了的,发过去就是错的了,所以我这里输错了几次。。。
在这里插入图片描述
这时就在目标邮箱中收到了邮件,在qq邮箱的已发送中也可找到。

5.简易python版

from socket import *
import base64

# Mail content
subject = "I love computer networks!"
contenttype = "text/plain"
msg = "I love computer networks!"
endmsg = "\r\n.\r\n"

# Choose a mail server (e.g. Google mail server) and call it mailserver 
mailserver = "smtp.163.com"

# Sender and reciever
fromaddress = "******@163.com"
toaddress = "******@qq.com"

# Auth information (Encode with base64)
username = base64.b64encode(fromaddress.encode()).decode()
password = base64.b64encode("******".encode()).decode()

# Create socket called clientSocket and establish a TCP connection with mailserver
clientSocket = socket(AF_INET, SOCK_STREAM) 
clientSocket.connect((mailserver, 25))

recv = clientSocket.recv(1024).decode()
print(recv)
if recv[:3] != '220':
    print('220 reply not received from server.')

# Send HELO command and print server response.
heloCommand = 'HELO Alice\r\n'
clientSocket.send(heloCommand.encode())
recv1 = clientSocket.recv(1024).decode()
print(recv1)
if recv1[:3] != '250':
    print('250 reply not received from server.')

# Auth
clientSocket.sendall('AUTH LOGIN\r\n'.encode())
recv = clientSocket.recv(1024).decode()
print(recv)
if (recv[:3] != '334'):
	print('334 reply not received from server')

clientSocket.sendall((username + '\r\n').encode())
recv = clientSocket.recv(1024).decode()
print(recv)
if (recv[:3] != '334'):
	print('334 reply not received from server')

clientSocket.sendall((password + '\r\n').encode())
recv = clientSocket.recv(1024).decode()
print(recv)
if (recv[:3] != '235'):
	print('235 reply not received from server')

# Send MAIL FROM command and print server response.
clientSocket.sendall(('MAIL FROM: <' + fromaddress + '>\r\n').encode())
recv = clientSocket.recv(1024).decode()
print(recv)
if (recv[:3] != '250'):
	print('250 reply not received from server')

# Send RCPT TO command and print server response.
clientSocket.sendall(('RCPT TO: <' + toaddress + '>\r\n').encode())
recv = clientSocket.recv(1024).decode()
print(recv)
if (recv[:3] != '250'):
	print('250 reply not received from server')

# Send DATA command and print server response.
clientSocket.send('DATA\r\n'.encode())
recv = clientSocket.recv(1024).decode()
print(recv)
if (recv[:3] != '354'):
	print('354 reply not received from server')

# Send message data.
message = 'from:' + fromaddress + '\r\n'
message += 'to:' + toaddress + '\r\n'
message += 'subject:' + subject + '\r\n'
message += 'Content-Type:' + contenttype + '\t\n'
message += '\r\n' + msg
clientSocket.sendall(message.encode())

# Message ends with a single period.
clientSocket.sendall(endmsg.encode())
recv = clientSocket.recv(1024).decode()
print(recv)
if (recv[:3] != '250'):
	print('250 reply not received from server')

# Send QUIT command and get server response.
clientSocket.sendall('QUIT\r\n'.encode())

# Close connection
clientSocket.close()

详情可看github

6.IMAP(收邮件)/pop3

telnet imap.qq.com 143

登录邮箱

a01 login username password

password用授权码

在这里插入图片描述

  • 列出所有信箱

a02 list “” *

  • 列出inbox信箱中的信息

a03 select inbox

其中184 EXISTS表示邮件总数但是比我在qq邮箱中只显示118篇,RECENT前面的数字“0”表示新邮件数目(就是未读邮件)。

  • 查看邮箱内容(信头)

a4 fetch 3 body[header]

然后就是一堆看不懂的文字
在这里插入图片描述
根据其中的时间可以在邮箱中找到
在这里插入图片描述

  • 请求信件的内容

a5 fetch 3 body[text]

接下来还是一堆码
在这里插入图片描述

  • 退出邮箱

a06 logout

在这里插入图片描述
更详细步骤

Telnet 安全隐患

虽然Telnet较为简单实用也很方便,但是在格外注重安全的现代网络技术中,Telnet并不被重用。原因在于Telnet是一个明文传送协议,它将用户的所有内容,包括用户名和密码都明文在互联网上传送,具有一定的安全隐患,因此许多服务器都会选择禁用Telnet服务。如果我们要使用Telnet的远程登录,使用前应在远端服务器上检查并设置允许Telnet服务的功能。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>好的,我需要帮助用户理解如何正确配置IMAP/SMTP或POP3/SMTP来发送邮件,并区分这两种配置的区别以及如何选择。首先,我应该回顾一下SMTP、POP3和IMAP的基本概念,确保自己对这些协议有正确的理解。 根据用户提供的引用内容,SMTP是专门用于发送邮件的协议,而POP3和IMAP用于接收邮件。引用[1]提到SMTP负责邮件服务器之间的传输,引用[2]和[3]则说明POP3和IMAP是用于接收邮件的协议,客户端通过它们从服务器获取邮件。因此,配置发送邮件主要涉及SMTP的设置,而接收邮件则选择POP3或IMAP。 接下来,用户的问题是关于配置IMAP/SMTP和POP3/SMTP发送邮件的区别及选择。这里可能存在一个误解,因为发送邮件通常只需要配置SMTP,而接收才需要IMAP或POP3。可能用户的意思是同时配置接收和发送协议,即使用IMAP+SMTP或POP3+SMTP的组合。需要明确说明发送邮件仅需SMTP,但客户端通常需要同时配置发送和接收协议,因此需要解释这两种组合的差异。 需要指出,无论选择IMAP还是POP3作为接收协议,发送都是通过SMTP完成的,因此发送邮件的配置部分(如SMTP服务器地址、端口、加密方式)是相同的。两者的区别主要在于接收邮件的方式:IMAP同步邮件状态,而POP3通常下载并删除服务器上的邮件。因此,选择IMAP还是POP3会影响邮件管理和存储方式,但不会直接影响发送邮件的配置。 此外,需要提供配置时的具体参数,如服务器地址、端口号(如SMTP常用端口587或465)、加密方式(SSL/TLS)以及是否需要身份验证。同时,应举例说明不同邮箱服务提供商(如Gmail、Outlook)的配置差异,并强调安全设置的重要性,如启用应用专用密码或开启IMAP/SMTP访问权限。 最后,总结建议用户根据邮件管理需求选择接收协议,而发送配置保持不变。如果需要多设备同步,推荐IMAP+SMTP;如果只需单设备保存邮件,则POP3+SMTP更合适。同时提醒用户参考邮箱服务商的具体文档,确保配置正确。</think>### 如何配置IMAP/SMTP或POP3/SMTP发送邮件? #### 核心区别与选择建议 1. **发送邮件的核心协议是SMTP** 无论选择IMAP还是POP3作为接收协议,**发送邮件均依赖SMTP协议**。两者的区别仅体现在**邮件接收方式**上: - **IMAP+SMTP**:IMAP协议同步邮件状态(保留服务器副本,支持多设备同步)[^3] - **POP3+SMTP**:POP3协议默认下载邮件到本地并删除服务器副本(适合单设备使用)[^2] 2. **配置参数对比** | 协议组合 | SMTP发送配置(通用) | 接收协议配置差异 | |----------------|-----------------------------------------|---------------------------------| | **IMAP+SMTP** | 服务器地址(如smtp.example.com)<br>端口(587/465)<br>加密方式(STARTTLS/SSL) | IMAP服务器地址(如imap.example.com)<br>端口993(SSL) | | **POP3+SMTP** | 同上 | POP3服务器地址(如pop.example.com)<br>端口995(SSL) | #### 配置步骤(以Gmail为例) 1. **启用SMTP访问权限** - 登录邮箱网页端 → 设置 → 启用IMAP/POP3访问权限 - 生成**应用专用密码**(若开启两步验证)[^2] 2. **客户端配置示例** ```plaintext SMTP发送配置(通用): 服务器: smtp.gmail.com 端口: 587 (STARTTLS) 或 465 (SSL) 身份验证: 邮箱全称 + 应用专用密码 IMAP接收配置: 服务器: imap.gmail.com 端口: 993 (SSL) POP3接收配置: 服务器: pop.gmail.com 端口: 995 (SSL) ``` #### 选择建议 - **多设备办公场景**:选择**IMAP+SMTP**(邮件状态实时同步) - **单设备存档场景**:选择**POP3+SMTP**(节省服务器存储空间) - **安全性要求**:均需使用SSL/TLS加密,避免明文传输[^1] --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值