zoukankan      html  css  js  c++  java
  • 使用shell发送邮件,方便快捷

    前言

    很多时候我们需要发送邮件,比如定时任务,比如邮件验证码等等。
    各大编程语言都可以实现发送邮件功能,但还是太麻烦了,所以通过tcpdump抓包发现smtp发送邮件原理还是很简单嘛。
    所以就想着能不能通过shell搞定,这样在Linux平台下就很通用,不必准备各种安装环境啥的。

    鉴赏代码

    该脚本需要安装sudo apt-get install expect telnet这两个工具,一个负责tcp连接到smtp服务器,一个负责收发指令。
    执行./mail.sh xxx@163.com password yyy@qq.com sendMsg 123456命令即可发送一封邮件。
    需要注意的是现在各大邮件服务器发送邮件的密码是授权码,而不是登录邮箱密码。
    可以试着使用编程语言发送复杂邮件,通过tcpdump抓包分析发送邮件的具体机制,自行模拟一下下就ok了。

    #!/bin/bash
    
    user=$1
    pass=$2
    to=$3
    subject=$4
    data=$5
    
    username=$(echo -n $user | base64)
    password=$(echo -n $pass | base64)
    
    expect <<EOF
    spawn telnet smtp.163.com 25
    expect "220 163.com*"
    
    send "EHLO localhost
    "
    expect "250 8BITMIME"
    
    send "AUTH LOGIN
    "
    expect "334 dXNlcm5hbWU6"
    
    send "$username
    "
    expect "334 UGFzc3dvcmQ6"
    
    send "$password
    "
    expect "235 Authentication successful"
    
    send "MAIL FROM:<$user> BODY=8BITMIME
    "
    expect "250 Mail OK"
    
    send "RCPT TO: <$to>
    "
    expect "250 Mail OK"
    
    send "DATA
    "
    expect "354 End data with <CR><LF>.<CR><LF>"
    
    send "Mime-Version: 1.0
    "
    send "From: <$user>
    "
    send "To: $to
    "
    send "Subject: $subject
    "
    send "Content-Type: text/plain; charset=UTF-8
    "
    send "Content-Transfer-Encoding: quoted-printable
    
    "
    send $data
    send "
    .
    "
    expect "250 Mail OK*"
    
    send "QUIT
    "
    expect EOF
    EOF
    

    总结

    该脚本解决了我的发送邮件验证码的小需求,以前都是通过编程语言去实现,有些有依赖,各种准备环境也麻烦。
    而使用上述脚本可以灵活的满足各种需求,需要改动时直接修改shell脚本就ok了。妈妈再也不用担心我发邮件麻烦了。

  • 相关阅读:
    Codeforces 1237D. Balanced Playlist
    Codeforces 1237C2. Balanced Removals (Harder)
    使用excel计算指数平滑和移动平均
    HP滤波原理浅学
    第二章平稳时间序列模型——ACF和PACF和样本ACF/PACF
    第二章平稳时间序列模型——AR(p),MA(q),ARMA(p,q)模型及其平稳性
    第一章时间序列基础——差分方程和求解(二)
    R中的par()函数的参数
    你真的懂了R中的stem函数是如何绘制茎叶图的么?
    关于R中的mode()和class()的区别
  • 原文地址:https://www.cnblogs.com/janbar/p/14190586.html
Copyright © 2011-2022 走看看