Linux两种发邮件的方式

一、msmtp客户端的方式

1、下载安装msmtp
wget https://marlam.de/msmtp/releases/msmtp-1.6.7.tar.xz
tar -xvJf msmtp-1.6.7.tar.xz
ls
cd msmtp-1.6.7
./configure --prefix=/usr/local/msmtp
make && make install
2、配置msmtp账号
cd /usr/local/msmtp
mkdir etc #配置文件目录和配置文件都要自己建
cd etc
手动创建配置文件vi msmtprc
# Set default values for all following accounts.
defaults
logfile /usr/local/msmtp/msmtp.log
# The SMTP server of the provider.
account default
#你的发送邮件服务器
host smtp.126.com
port 25
#要从哪个邮箱发出
from   [email protected]
#这里如果使用on的话会报 "msmtp: cannot use a secure authentication method"错误
auth login
tls off
#邮箱用户名
user [email protected]
#邮箱用户名
#邮箱密码,这里可是明文的,如果你觉得不安全可以把文件改为600属性
password xxxxxxx
# Set a default account
account default: test
Esc,shift+: 进入命令模式,输入x,保存退出。
由于password是明码,所以我们需要修改此文件的权限 chmod 600 etc/msmtprc
3、测试
/usr/local/msmtp/bin/msmtp [email protected]
输入任意字符,然后按Ctrl+D退出,查看邮件是否收到。
由于设置了日志,可以到 /usr/local/msmtp/msmtp.log,查看日志,发信成功失败都会有记录。
按ctrl+d结束
但是它不能够发送附件,所以安装mutt
4、安装mutt
vi /etc/Muttrc ,编辑mutt的总设置,修改以下几行
set from="发送邮件地址"
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set realname="发件人"
set editor="vi"
发件地址最好与msmtp设置的账号相同,否则可能会出错。
5、测试一下mutt是否有效
echo "测试测试" | mutt -s "测试" 测试邮件地址
echo "testmail" |mutt -s "test" [-a /etc/hosts] [email protected]
这里的-a 是指添加附件,如果是多个附件的话就 多加几个 -a 文件名
可以使用mutt进行邮件备份等工作了,结合cron使用,可以实现的功能相当多。

二、使用python脚本发送邮件

脚本如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Wangj
import smtplib
from email.mime.text import MIMEText
import sys
mail_host = 'smtp.126.com'
mail_user = 'username'
mail_pass = 'passwd'
mail_postfix = '126.com'
def send_mail(to_list,subject,content):
    me = "test"+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['From'] = me
    msg['to'] = to_list
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False
if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

新建send.py文件,将以上代码复制编辑,设置发件用户、密码。

然后验证脚本是否可以正常发送邮件 ./send.py [email protected]  hello test 三个参数分别是:收件人邮箱、邮箱主题、邮箱内容

你可能感兴趣的:(Linux)