近期由于经常需要给别人发送邮件,每次都要打开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終端一行命令发送邮件的更多相关文章

  1. Linux下使用mail命令发送邮件

    因为需要经常备份网站的数据,所以了解并学习了下linux下如何通过shell来发送邮件,这里以CentOS为例,使用mail命令来进行外部邮件的发送.mail命令的语法如下: Usage: mail ...

  2. Linux下mail/mailx命令发送邮件

    最近看到项目中经常会用mail/mailx命令发送由java程序生成的report,比较新鲜.下面就简单介绍下mail/mailx命令用法.本文以mail命令举例(mail/mailx)效果都是一样的 ...

  3. [Linux小技巧] 一行命令让CPU占用率达到100%

    for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/d ...

  4. Linux 下通过mail命令发送邮件

    mail -s "测试"  1968089885@foxmail.com 需要先配置smtp服务器

  5. 用linux mail命令发送邮件[Linux]

    mail [-s 邮件标题] <<邮件地址1> [邮件地址2] [邮件地址3]> [ < 包含邮件内容的文件路径 ] <-- -f 发送邮件地址> [-F 显 ...

  6. Linux必学的命令

    Linux必学的命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正 ...

  7. Linux下利用nc命令来监控检测服务器的端口使用情况(转载)

    最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉 ...

  8. Linux常用的基础命令总结

    man 查看英文命令帮助   可以看作--help 拷贝目录的命令cp -a  包含所有 ls -a 显示所有文件包括隐藏文件  -ld ls -F 过滤目录文件(给不同类型文件结尾加上不同的符号) ...

  9. linux应用以及常用命令

    各目录作用"/" :Linux文件系统的入口.也是最高一级的目录."/bin":基本系统所需要的命令,功能和"/usr/bin"类似,这个目 ...

随机推荐

  1. CentOS7 GlusterFS文件系统部署

    一.GlusterFS简介 GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点 ...

  2. 关于css背景的一点总结

    background默认背景区域覆盖内容和内边距及边框,分别有以下属性: 1.background-clip(定义背景绘制区域) border-box 背景覆盖边框最外面 padding-box 背景 ...

  3. elementui_day02

    Elementui_day02 1. maven多模块搭建 1.1 搭建多模块的好处 1. 方便维护(代码增加,拆分越细,越好维护) 2. 有些公共的内容(BaseDomain.BaseService ...

  4. lucas定理及其拓展的推导

    lucas定理及其拓展的推导 我的前一篇博客-- lucas定理 https://mp.csdn.net/mdeditor/100550317#主要是给出了lucas的结论和模板,不涉及推导. 本篇文 ...

  5. EasyUI笔记(二)Layout布局

    本系列只列出一些常用的属性.事件或方法,具体完整知识请查看API文档 Panel(面板)   1. 通过标签创建面板 <div id="p" class="easy ...

  6. 分库分表技术演进&最佳实践

    每个优秀的程序员和架构师都应该掌握分库分表,这是我的观点. 移动互联网时代,海量的用户每天产生海量的数量,比如: 用户表 订单表 交易流水表 以支付宝用户为例,8亿:微信用户更是10亿.订单表更夸张, ...

  7. 二、继续学习(主要参考Python编程从入门到实践)

    操作列表 具体内容如下: # 操作列表 # 使用for循环遍历整个列表. # 使用for循环处理数据是一种对数据集执行整体操作的不错的方式. magicians = ['alice', 'david' ...

  8. Pikachu-SSRF(服务器端请求伪造)

    SSRF(Server-Side Request Forgery:服务器端请求伪造) 其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制 导致攻击者可 ...

  9. gitlab持续集成,自动部署

    写这篇文章的目的是,实现提交代码到gitlab上的一个项目时,自动打包,并将包发布到另一台服务器上,重启tomat.如有问题,可以联系本人QQ:409838567 gitlab-ci,是基于gitla ...

  10. mybatis-plus invalid bound statement (not found) insert解决办法

    使用mybatis-plus时,使用IService.insert方法时,提示找不到insert方法,原因是,mybatis-plus提供了两个BaseMapper和IService. 改成引用imp ...