2019独角兽企业重金招聘Python工程师标准>>>

背景:

  1. 工作中有一个业务需要每个月25号发送一个下月使用的文件给相关人员。

    • 在此之前是用QQ邮箱的定时发送功能,先一次性地编缉好一年12个月的,到今年是第3年了。
    • QQ定时发送的邮件还不能太多,好象最大只能30、40封。
    • 以前想过自己的桌面PC定时发,但可能不及时可发送不成功。忽然想起阿里云用了2年,可以放在云上自动发。
    • 先是想用LUA来做,遂找工具,最先是blat(一个非常好的工具),整了好几个小时不成功,发现是blat不支持TLS的原因,暂时放弃。
    • 然后找到SendmailViaSMTP这个工具,发现很好用,可能半小时就发送成功了。见: https://my.oschina.net/SamXIAO/blog/1790383 SendmailViaSMTP实践-命令行smtp发送邮件-通过QQ邮箱第三方客户端登录授权码
    • 今天使用blat+stunnel也成功发送了,在此记录。
  2. QQ邮箱需要使用TLS进行身份认证。
  3. 温馨提示:在第三方登录QQ邮箱,可能存在邮件泄露风险,甚至危害Apple ID安全,建议使用QQ邮箱手机版登录。

继续获取授权码登录第三方客户端邮箱 。 生成授权码

操作

  1. 下载stunnel-5.44-win32-installer.exe

    • https://www.stunnel.org/downloads.html
  2. 下载blat3.2.19: blat3219_32.full.zip

    • http://www.blat.net/

      https://sourceforge.net/projects/blat/files/Blat%20Full%20Version/32%20bit%20versions/Win2000%20and%20newer/

  3. 安装stunnel 5.44.

    • 全部使用默认安装项即可。
    • 以下配置全部按回车键也可以
  4. 配置stunnel

    编缉 C:\Program Files (x86)\stunnel\config\stunnel.conf

    [gmail-smtp]
    client = yes
    accept = 127.0.0.1:10025
    connect = smtp.gmail.com:465
    verifyChain = yes
    CAfile = ca-certs.pem
    checkHost = smtp.gmail.com
    OCSPaia = yes

    修改[gmail-smtp]段如下:

    [gmail-smtp]
    client = yes
    accept = 127.0.0.1:10025
    connect = smtp.qq.com:465
    verifyChain = yes
    CAfile = ca-certs.pem
    checkHost = smtp.qq.com
    OCSPaia = yes

  5. 解压缩blat  ,运行CMD命令行工具

    • 命令行切换到:  blat3219_32.full\blat3219\full
    • Windows 2012r2:
    • >verMicrosoft Windows [版本 6.3.9600]>cd
      D:\backup\tools\电子邮件\Blat - Windows Command Line SMTP Mailer\blat3219_32.full\blat3219\full
      
  6. 配置blat

    • $>blat -install 127.0.0.1 1395888@qq.com 3 10025
      Blat v3.2.19 (build : Nov 18 2017 03:14:35)
      32-bit Windows, Full, UnicodeSMTP server set to 127.0.0.1 on port 10025 with user 1395888@qq.com, retry 3 time(s)

      注意这里的port 10025要和stunnel配置文件stunnel.conf的accept = 127.0.0.1:10025 中的相同即可,可以使用其它非知名值。

  7. 命令行发送邮件

    • [2018/04/06 周五 10:36:14.24] D:\backup\tools\电子邮件\Blat - Windows Command Li
      \full >
      blat .\body.txt -to 1395888@qq.com,xsz@WanfaCATV.com -u "1395888@qq.com" -pw "rXXXXxzexzgXXXX" -subject  "嗨!HELLO from blat " -attach .\Lic4XXXXXXX_202609.runSN.txt  -delay 5 -debug 

      正确的运行结果:

    • Blat v3.2.19 (build : Nov 18 2017 03:14:35)
      32-bit Windows, Full, Unicode<<<getline<<< 220 smtp.qq.com Esmtp QQ Mail Server
      >>>putline>>> EHLO samxiao-k660.qq.com
      <<<getline<<< 250-smtp.qq.com
      <<<getline<<< 250-PIPELINING
      <<<getline<<< 250-SIZE 73400320
      <<<getline<<< 250-AUTH LOGIN PLAIN
      <<<getline<<< 250-AUTH=LOGIN
      <<<getline<<< 250-MAILCOMPRESS
      <<<getline<<< 250 8BITMIME
      Sending .\body.txt to 1395888@qq.com, xz@WTV.com
      Subject: Login name is 1395888@qq.com
      Attached binary file: .\Lic4XXXX_202609.runSN.txt
      Try number 1 of 3.
      >>>putline>>> AUTH PLAIN  *****
      <<<getline<<< 235 Authentication successful
      >>>putline>>> MAIL FROM:<1395888@qq.com> BODY=8BITMIME
      <<<getline<<< 250 Ok
      >>>putline>>> RCPT TO:<1395888@qq.com>
      <<<getline<<< 250 Ok
      >>>putline>>> RCPT TO:<xz@WTV.com>
      <<<getline<<< 250 Ok
      >>>putline>>> DATA
      <<<getline<<< 354 End data with <CR><LF>.<CR><LF>
      <<<getline<<< 250 Ok: queued as
      >>>putline>>> QUIT
      <<<getline<<< 221 Bye
      
    • TLS使用587端口(即:connect = smtp.qq.com:587),不能发送,返回结果如下:

    • Blat v3.2.19 (build : Nov 18 2017 03:14:35)

      32-bit Windows, Full, Unicode

      Error: Connection to server was dropped.

      Error: Connection to server was dropped.

      Error: Connection to server was dropped.

      *** Error ***  SMTP server error

      Error: Not a socket.

      Error: Not a socket.

  8. 结果-QQ邮箱收到的邮件

参考

Using Blat, Stunnel and Gmail Together

January 13, 2010  3 minute readby Jeff Kastner

http://www.jeffkastner.com/2010/01/blat-stunnel-and-gmail/

这篇文章比较旧了,STUNNEL版本也比较老,用的是GOOGLE的GMAIL

其它

写本文及上一篇共用了3小时。

stunnel.log 文件

stunnel.conf 作以下配置,可以生成stunnel.log文件。

; Debugging stuff (may be useful for troubleshooting)
;debug = info
output = stunnel.log

stunnel.conf 中[gmail-smtp] 可以任意命名而不影响使用

只要accept = 127.0.0.1:10025 中的端口和blat中的配置相同即可。

2018.04.06 10:55:03 LOG5[1]: Service [smtp] connected remote server from 192.168.31.180:19971

2018.04.06 10:58:56 LOG5[0]: Service [gmail-smtp] accepted connection from 127.0.0.1:20593

2018.04.06 11:04:00 LOG5[0]: Service [gmail-sddmtp] connected remote server from 192.168.31.180:21083

2018.04.06 11:05:25 LOG5[1]: Service [gmdd] accepted connection from 127.0.0.1:21129

blat直接给smtp.qq.com:465发送邮件不成功:

$cf465

Blat v3.2.19 (build : Nov 18 2017 03:14:35)

32-bit Windows, Full, Unicode

SMTP server set to smtp.qq.com on port 465 with user 1395888@qq.com, retry 3 time(s)

$s

$blat .\body.txt -to 139585237@qq.com -u "1395888@qq.com" -pw "rsjehxzexzgmbgjh" -subject  "嗨!HELLO

from blat " -attach ".\Lic4xxxxx_202609.runSN.txt",".\pf.conf","s.bat" -delay 5 -debug

Blat v3.2.19 (build : Nov 18 2017 03:14:35)

32-bit Windows, Full, Unicode

Error: Wait a bit (possible timeout).

^C终止批处理操作吗(Y/N)? y

blat直接给smtp.qq.com:587发送邮件不成功:

$cf587

Blat v3.2.19 (build : Nov 18 2017 03:14:35)

32-bit Windows, Full, Unicode

SMTP server set to smtp.qq.com on port 587 with user 1395888@qq.com, retry 3 time(s)

$s

$blat .\body.txt -to 1395888@qq.com,xsz@WanfaCATV.com -u "1395888@qq.com" -pw "xxxxxxxxxxgmbgjh" -subject  "嗨!HELLO

from blat " -attach ".\Lic4exxxx.runSN.txt",".\pf.conf","s.bat" -delay 5 -debug

Blat v3.2.19 (build : Nov 18 2017 03:14:35)

32-bit Windows, Full, Unicode

<<<getline<<< 220 smtp.qq.com Esmtp QQ Mail Server

>>>putline>>> EHLO samxiao-k660.qq.com

<<<getline<<< 250-smtp.qq.com

<<<getline<<< 250-PIPELINING

<<<getline<<< 250-SIZE 73400320

<<<getline<<< 250-STARTTLS

<<<getline<<< 250-AUTH LOGIN PLAIN

<<<getline<<< 250-AUTH=LOGIN

<<<getline<<< 250-MAILCOMPRESS

<<<getline<<< 250 8BITMIME

Sending .\body.txt to 1395888@qq.com

Subject: Login name is 1395888@qq.com

Attached binary file: .\Lic4exxx1_202609.runSN.txt

Attached binary file: .\pf.conf

Attached binary file: s.bat

Try number 1 of 3.

>>>putline>>> AUTH PLAIN  *****

<<<getline<<< 530 Must issue a STARTTLS command first.

*** Warning ***  The SMTP server did not accept Auth PLAIN value.

*** Warning ***  Are your login userid and password correct?

>>>putline>>> AUTH LOGIN

<<<getline<<< 530 Must issue a STARTTLS command first.

*** Warning ***  The SMTP server does not require AUTH LOGIN.

*** Warning ***  Are you sure server supports AUTH?

>>>putline>>> MAIL FROM:<1395888@qq.com> BODY=8BITMIME

<<<getline<<< 530 Must issue a STARTTLS command first.

*** Error ***  The SMTP server does not like the sender name.

*** Error ***  Have you set your mail address correctly?

>>>putline>>> QUIT

<<<getline<<< 221 Bye

转载于:https://my.oschina.net/SamXIAO/blog/1790415

blat+stunnel实践-命令行smtp发送邮件-通过QQ邮箱第三方客户端登录授权码相关推荐

  1. 利用 telnet 命令测试 SMTP 服务(QQ邮箱)

    文章目录 开通QQ邮箱的SMTP服务 开启telnet客户端 使用CMD利用 telnet 命令测试 SMTP 服务 开通QQ邮箱的SMTP服务 首先要开启QQ邮箱的smtp服务,默认是关闭的. 1. ...

  2. 利用 telnet 命令测试 SMTP 服务(QQ邮箱发邮件)

    文章目录 1 开通 QQ 邮箱的 SMTP 服务 2 开启 telnet 客户端 3 使用 CMD 利用 telnet 命令测试 SMTP 服务 1 开通 QQ 邮箱的 SMTP 服务 2.找到&qu ...

  3. smtp 发送邮件(qq邮箱)失败

    项目用的框架是 ThinkPHP,在本地WAMP环境下使用了QQ邮箱的 smtp 邮件系统 本地测试成功的情况下,部署到服务器上无法发送邮件,报错:500 解决方法 最终发现是端口号的原因,QQ邮箱的 ...

  4. python基于SMTP发送邮件(qq邮箱)

    在Python中, smtplib模块提供了丰富的邮件发送接口,只要设置smtp服务器和端口,输入账号密码登陆,就可以使用邮件发送的接口. 第一步:开启SMTP服务 (1)点击"开启&quo ...

  5. python发送qq邮件_python基于SMTP发送邮件(qq邮箱)

    在Python中, smtplib模块提供了丰富的邮件发送接口,只要设置smtp服务器和端口,输入账号密码登陆,就可以使用邮件发送的接口. 第一步:开启SMTP服务 (1)点击"开启&quo ...

  6. QQ邮箱第三方POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务授权码

    参考QQ邮箱: 什么是授权码,它又是如何设置? 设置入口: 选择 账户 下拉找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务就好了.我这边已经开通,开通流程挺简单的 ...

  7. Linux mailx发送邮件到QQ邮箱(测试成功)

    Linux mailx发送邮件到QQ邮箱(测试成功) QQ邮箱设置授权码 安装 yum install mailx # centos sudo apt-get install heirloom-mai ...

  8. C# WinForm 使用SMTP协议发送QQ邮箱验证码

    文章目录 前言 功能实现步骤 一.获取QQ邮箱授权码 二.功能界面 三.创建发送邮箱验证码的类 四.在From1中调用类中的函数,实现功能 前言   在程序设计中,发送验证码是常见的一个功能,用户在注 ...

  9. java模拟网易邮箱登录_java实现163邮箱发送邮件到qq邮箱成功案例

    下载和上传附件.发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,现在终于成功以163邮箱发送邮件到qq邮箱,以下是相 ...

最新文章

  1. yjv是电缆还是电线_电力电缆YJV与BVV二者之间的区别是什么?
  2. 讲真!朋友圈别设置三天可见!
  3. 《SAS编程与数据挖掘商业案例》学习笔记之十二
  4. 栈-线性表(代码、分析、汇编)
  5. 【VB.NET】测验题目Quiz3
  6. 医药计算机人员试题及答案,医药计算机应用试题.doc
  7. Linux的文件的打包(tar方法)
  8. 《http权威指南》读书笔记 六
  9. 关于iOS和OS X废弃的API知识点
  10. 药品管理系统java_基于Java的药品管理系统
  11. 服务器虚拟化发展的趋势,2013年服务器虚拟化九大发展趋势
  12. Android Intent定义选择器打开相机和相册
  13. Git在windows和linux安装教程
  14. 映美FP-530K+打印发票卡纸
  15. 父页面js监听iframe内子页面并作出响应
  16. 21 C++ 长度单位转换
  17. w7计算机休眠网络就断了,设置Win7电脑休眠时不断开WiFi教程
  18. 爱奇艺校招map优先队列笔试题字符串的价值
  19. 常用的图数据库(Neo4j、FlockDB、AllegroGrap、GraphDB、InfiniteGraph、TITAN、OrientDb)
  20. Mysql中使用Update From语句

热门文章

  1. 如何在Android上管理文件和使用文件系统
  2. idea actiBPM插件生成png文件 右键BPMN转变后缀的XML文件时没有Diagrams选项问题
  3. 夜光带你走进python开发 (二十九)传奇语言
  4. java websocket 微服务_微服务-springboot+websocket在线聊天室
  5. Java设计模式 建造者模式
  6. sqlite怎么转换mysql_Django如何把SQLite数据库转换为Mysql数据库
  7. 如何将CSDN文章内容转成PDF
  8. HVF5220-4D-03,HVF3230-3G-02先导型二位五通电磁阀
  9. 【算法实现】随机森林算法的房屋价格预测模型
  10. 云计算是怎么定义的,核心技术有哪些?