在日常工具开发中,常常会有发送邮件的需求。在一些高级语言中,如Python。C#中,都有专门的邮件发送模块,如Python 中的 smtplib 模块。那么。一封邮件究竟是怎样发送到一个特定的邮箱呢?

举个样例:使用test@163.com 发送一封邮件到 test@qq.com。

首先,看下邮件系统的组成部分。例如以下图

再看下邮件发送的整个过程,例如以下图:



①发送者使用SMTP协议,将邮件发送到自己邮箱server

②163邮件server使用SMTP协议,将邮件发送到QQ邮件server

③收件人使用POP3协议,从server端读取邮件

在上面过程中我们会发现两个问题:

①163邮件server须要验证发送方是否是合法用户。也就是说在整个发送过程中。须要使用到test@163.com的password才干完毕整个邮件发送过程。

②163邮件server怎样发送邮件到QQ邮件server的呢?事实上,这中间有个域名解析的过程。发送方会依据收件人的信箱来解析其server域名(qq.com),在该解析过程中,询问其邮件server的地址。

既然验证过程是在163邮件server。那么我们是不是能够直接绕过去,直接模拟请求跟QQ邮件server进行交互呢?答案是肯定的,而邮件发送的整个过程能够抽象成下图

我们能够发现关键的地方是怎样解析QQ邮件server的地址。

此处我们使用Windows命令nslookup来进行域名解析。

查看qq.com的邮件server地址,能够使用命令:nslookup -qt=mx qq.com,结果例如以下:



当中 mail exchanger 后面就是qq.com 的邮件server地址。

这样。我们就绕过了password验证的过程,将邮件直接发送到了收件人的邮件server。想要了解代码怎样实现。欢迎查看之前的文章“Python写自己主动化之邮件匿名发送

Windows命令实现匿名邮件发送的更多相关文章

  1. WINDOWS 命令行 串口 COM 发送数据

    WINDOWS 命令 串口 数据 type con>com1 回车. com1 为想发送的串口. 输入字符并回车即可.

  2. 通过telnet命令进行网络邮件发送

    1.建立smtp邮箱服务连接 open smtp.sina.com 2.连接上邮箱服务后进行握手操作 helo smtp.sina.com 3.输入帐号密码进行验证::此步后缓冲区会输出一些字符,你只 ...

  3. C#邮件发送问题(二)

    C#邮件发送问题(一) 三.C#下创建基于TcpClient发送邮件组件 在上一节在Dos命令行下测试SMTP服务器连接时,已经使用了SMTP的部分命令,但是当时无法对信息进行编码和解码,也就无法继续 ...

  4. Python写自己主动化之邮件发送(匿名)

    为了可以实现邮件发送功能.首先.我们须要了解一下邮件的发送过程是什么样子的,此处不再具体说明,请大家自行搜索或查看p=438">http://www.sogouqa.com/?p=43 ...

  5. Python邮件发送脚本(Linux,Windows)通用

    脚本 #!/usr/bin/python #-*- coding:utf-8 -*- #Python Mail for chenglee #if fileformat=dos, update file ...

  6. 用socket发送匿名邮件之python实现

    发送邮件可以用smtp协议,整个过程为: 用户代理(user-agent,比如outlook.foxmail等邮件客户端)---(smtp协议)--->本地邮件服务器 --- (smtp协议)- ...

  7. centos下利用mail命令进行邮件发送

    centos下默认自带mail命令: 可以用如下命令查看存放位置: which mail 结果如下: 如果没有安装可以使用 如下命令安装 yum -y install mailx 利用mail命令进行 ...

  8. Windows Server 2003搭建邮件服务器

    Windows Server 2003搭建邮件服务器 由于Windows Server 2003默认是没有安装我们搭建邮件服务器所需要的POP3和SMTP服务的,因此需要我们自己来安装.方法如下: 1 ...

  9. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

随机推荐

  1. 计算机内存数据存储基本原理----寄存器和RAM的电路基础

    计算机里存储数据主要有这几个部件:CPU里的寄存器和缓存.内存(内存条)和磁盘,这里我们主要简单讲下寄存器和内存条的基础实现电路. 在前面的文章<CPU怎么计算1+1----CPU计算的电路基础 ...

  2. Codeforces Beta Round #93 (Div. 2 Only) (Virtual participation)

    A 相邻点对距离和*k B (Σ(v/2))/2 C 一直想不到"最优"是怎么体现的,发现y2=y1*(t1-t0)/(t0-t2),就写了1e6的枚举,然而又一些特殊情况没考虑到 ...

  3. [Python3网络爬虫开发实战] 4-解析库的使用

    上一章中,我们实现了一个最基本的爬虫,但提取页面信息时使用的是正则表达式,这还是比较烦琐,而且万一有地方写错了,可能导致匹配失败,所以使用正则表达式提取页面信息多多少少还是有些不方便. 对于网页的节点 ...

  4. Python:安装3.6

    centos7 自带有 python,但是却是 python2 版本的 python,如果你想安装个python3怎么办呢?难道要从github上把源码clone下来进行编译安装么?没错!因为 yum ...

  5. MySQL-----多对多

    多对多: 示例1: 用户表和相亲记录表 用户表 用户id 用户名                  性别 1 George  男 2 Elizabeth 女 3 Bruce 男 4 Catherine ...

  6. 10 行 Python 代码,批量压缩图片 500 张,简直太强大了

    本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/5hpFDgjCpfb0O1Jg-ycACw 熟悉 "Pyth ...

  7. python 库文件版本收集及安装

    版本收集:pip freeze > require.txt版本安装:pip install -r require.txt

  8. LeetCode(6) ZigZag Conversion

    题目 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows li ...

  9. 初学数位DP

    所谓数位dp,字面意思就是在数位上进行dp,数位的含义:一个数有个位.十位.百位.千位.等等,数的每一位就是数位. 数位DP一般应用于: 求出给定区间[A,B]内,符合条件P[i]的数 i 的个数. ...

  10. 开发调式时生成dump文件

    开发调式时,对程序生成dump文件:1:需要生成的时机,加Thread.sleep(600*1000).2:打开jvisualvm找到该程序进程号.3:jmap.