Linux終端一行命令发送邮件
近期由于经常需要给别人发送邮件,每次都要打开QQ邮箱觉得非常麻烦。想到Linux终端可以自定义命令,加上python可以实现邮件发送功能,于是自己写了一个终端send + 文件地址的命令。
首先贴上python发送邮件的代码。
# An automatically send qq_email lib
# python3
# author: lunar_ubuntu
# -*- coding: UTF-8 -*-
import sys
import smtplib
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.header import Header
from xml.dom.minidom import parse
import xml.dom.minidom
dom_tree = xml.dom.minidom.parse("info.xml") # here you need to fill your xml file path
elem = dom_tree.documentElement
sender = elem.getElementsByTagName("sender")[0]
sender_acount = sender.getElementsByTagName("sender_acount")[0].childNodes[0].data
sender_pwd = sender.getElementsByTagName("sender_pwd")[0].childNodes[0].data
recevs = elem.getElementsByTagName("receivers")[0]
receivers = []
for re in recevs.getElementsByTagName("receiver_acount"):
receivers.append(re.childNodes[0].data)
def mail(*file_paths):
res = True
message = MIMEMultipart()
message['From'] = Header("ubuntu",'utf-8')
message['TO'] = Header("windows", 'utf-8')
subject = 'ubuntu send files'
message['Subject'] = Header(subject,'utf-8')
for path in file_paths[0]:
#print("path: %s" % path)
file_name = split_path(path)
#print("file_name: %s" % file_name)
attach = MIMEApplication(open(path,'rb').read())
attach['Content-type'] = 'application/octet-stream'
attach['Content-Disposition'] = 'attachment; filename="' + file_name + '"'
message.attach(attach)
server = smtplib.SMTP_SSL("smtp.qq.com", 465)
server.login(sender_acount, sender_pwd)
server.sendmail(sender_acount, receivers, message.as_string())
server.quit()
return res
def split_path(path):
return path.split('/')[-1]
if __name__ == '__main__':
res = mail(sys.argv[1:])
if res:
print("successfully send emails!")
else:
print("failed to send emails!")
我是通过将邮箱信息写在xml文件里面来读取的,这样方便修改。不用每次都修改源代码。xml也贴一下。
<info>
<sender>
<sender_acount>mail_address</sender_acount>
<sender_pwd>put your password here</sender_pwd>
</sender>
<receivers>
<receiver_acount>2100125584@qq.com</receiver_acount>
<receiver_acount>2100125584@qq.com</receiver_acount>
</receivers>
</info>
这里面的邮箱密码并不是你登录邮箱的那个密码,而是在邮箱里面的账号设置里获得的第三方登录码。具体可以看一下菜鸟教程的python发送邮件的那个教程。还不懂可以在评论区问我。
最后修改~/.bashrc文件,加上一句alias send="python3 [文件地址]"。然后保存退出后输入命令sourcr ~/.bashrc是命令生效。然后就可以通过send命令来发送文件啦!
Linux終端一行命令发送邮件的更多相关文章
- Linux下使用mail命令发送邮件
因为需要经常备份网站的数据,所以了解并学习了下linux下如何通过shell来发送邮件,这里以CentOS为例,使用mail命令来进行外部邮件的发送.mail命令的语法如下: Usage: mail ...
- Linux下mail/mailx命令发送邮件
最近看到项目中经常会用mail/mailx命令发送由java程序生成的report,比较新鲜.下面就简单介绍下mail/mailx命令用法.本文以mail命令举例(mail/mailx)效果都是一样的 ...
- [Linux小技巧] 一行命令让CPU占用率达到100%
for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/d ...
- Linux 下通过mail命令发送邮件
mail -s "测试" 1968089885@foxmail.com 需要先配置smtp服务器
- 用linux mail命令发送邮件[Linux]
mail [-s 邮件标题] <<邮件地址1> [邮件地址2] [邮件地址3]> [ < 包含邮件内容的文件路径 ] <-- -f 发送邮件地址> [-F 显 ...
- Linux必学的命令
Linux必学的命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正 ...
- Linux下利用nc命令来监控检测服务器的端口使用情况(转载)
最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉 ...
- Linux常用的基础命令总结
man 查看英文命令帮助 可以看作--help 拷贝目录的命令cp -a 包含所有 ls -a 显示所有文件包括隐藏文件 -ld ls -F 过滤目录文件(给不同类型文件结尾加上不同的符号) ...
- linux应用以及常用命令
各目录作用"/" :Linux文件系统的入口.也是最高一级的目录."/bin":基本系统所需要的命令,功能和"/usr/bin"类似,这个目 ...
随机推荐
- DK1.5-JDK11各个新特性
摘要: 参考文献: https://blog.csdn.net/lsxf_xin/article/details/79712537 JDK各个版本的新特性 要了解一门语言,最好的方式就是要能从基础的版 ...
- PMP--1.2 PMBOK指南组成部分
图1.2.5 PMBOK指南关键组成部分在项目中的相互关系说明:项目生命周期中包含项目阶段,项目阶段结束之后就是阶段关口: 而项目管理过程和项目管理过程组以及项目管理知识领域都是为了项目生命周期服 ...
- Python3中的支持向量机SVM的使用(有实例)
https://www.cnblogs.com/luyaoblog/p/6775342.html 首先,我们需要安装scikit-learn 一.导入sklearn算法包 在python中导入sci ...
- tensorflow模型的保存与加载
模型的保存与加载一般有三种模式:save/load weights(最干净.最轻量级的方式,只保存网络参数,不保存网络状态),save/load entire model(最简单粗暴的方式,把网络所有 ...
- 2020省选模拟训练1 排列(perm)多项式exp+EGF
这道题真的还是简单的一批..... 我当时要是参加考试的话该多好(凭这一道题就能进前 5 了) 十分显然的指数型生成函数. 令 $f[i]$ 表示有 $i$ 个点的答案. 然后显然有 $f[i]=\s ...
- LINUX 概述
初识linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协 ...
- gulp常用插件之gulp-postcss使用
更多gulp常用插件使用请访问:gulp常用插件汇总 ** gulp-postcss**这是一款通过多个插件通过管道传递CSS,但是仅解析一次CSS. 更多使用文档请点击访问gulp-postcss工 ...
- ESLint 使用指南
ESLint 官方文档 About 页面分 About 和 Philosophy 两个部分对 ESLint 做了介绍,简洁明了,值得一读. 借助 ESLint,可将 静态代码分析 和 问题代码协助修复 ...
- elasitic search fresh flush segment merge
new document首先在in memory buffer 中 (1)fresh 触发条件:默认one second 执行一次 执行过程:将memory buffer中documents 写入至f ...
- 0级搭建类002-Oracle Linux 8.x安装(OEL 8.0) 公开
项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...