一、安装

apt install sendemail

二、获取邮件授权码

        我这里是用的QQ,在QQ邮箱中,点击设置,开启SMTP服务,拿到授权码:

 三、编辑脚本

vim sendemail.sh

#!/bin/bash
account='【你的QQ】@qq.com'
password='【授权码】'
to=$1
subject=$2
content=$3
sendemail -f $account -t $to -s smtp.qq.com:465 -u $subject  -xu $account -xp $password -m $content

说明:

-f 表示发送者的邮箱
-t 表示接收者的邮箱
-cc 表示抄送发给谁
-bcc 表示暗抄送给谁
-o message-content-type=html   邮件内容的格式,html表示它是html格式
-o message-charset=utf8        邮件内容编码
-s 表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu 表示SMTP验证的用户名
-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)
-m 邮件的内容
-a 要发送的附件

四、执行命令

./sendemail.sh 【你的QQ】@qq.com 邮件主题 邮件内容

五、查看结果

        出现如下打印,可以查看邮件是否收到消息

        那怎么添加附件呢,对于这个指令来说  -a就是增加附件,首先我们在sh文件上增加-a,先用file=$4,就是指的命令行的第四串数据,填入附件的地址/root/data/hzy/hzylog.txt。

 在命令行上运行这个脚本,后面附带四串信息,分别是接收方邮件地址、邮件主题、邮件内容、附件的地址。可以看到发送成功,如上图。

六、注意事项

        1.如果出现如下打印:bash: ./sendemail.sh: Permission denied,表明脚本没有权限运行,需要为此脚本增加权限:

chmod 777 sendemail.sh

        2.邮件主题和邮件内容,如果发现发送不完全,可以单独加上“”,比如“邮件主题” “邮件内容”,这样即使内容有空格也能全部发送出去。

        3.要想发送,ubuntu要能联网,这是前提条件。

        4.如果运行脚本后,发现命令行为空,感觉要我们输入信息的样子,这个时候很大概率是端口没开放,程序一直在等待,直到超时都无法发送,此时我们需要确认下端口是否打开,还不行的话换一个端口再试试。



第二种指令

1.安装:apt-get install heirloom-mailx

2.vim /etc/s-nail.rc  编辑

上面smtp没加上465端口的话,默认就是25端口

 3.发送指令:echo 'test2' | heirloom-mailx -s 'test2' 【你的QQ】@qq.com 

---------

其他参考

下载安装sendEmail

wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
mkdir /usr/local/bin
tar zxf sendEmail-v1.56.tar.gz -C /usr/src
cd /usr/src/sendEmail-v1.56
cp -a sendEmail /usr/local/bin
chmod +x /usr/local/bin/sendEmail

下载解压即可使用
测试发送
sudo /usr/local/bin/sendEmail -f tuna_dai@163.com -t 931309012@qq.com -s smtp.163.com -u "我是邮件主题" -o message-content-type=html -o message-charset=utf8 -xu tuna_dai@163.com -xp 密码 -m "邮件内容"

/usr/local/bin/sendEmail        命令主程序
-f from@163.com                 发件人邮箱
-t to@163.com                   收件人邮箱
-s smtp.163.com                 发件人邮箱的smtp服务器
-u "邮件主题"                 邮件的标题
-o message-content-type=html    邮件内容的格式,html表示它是html格式
-o message-charset=utf8         邮件内容编码
-xu from@163.com                发件人邮箱的用户名
-xp 123456                      发件人授权密码
-m "我是邮件内容"                 邮件的具体内容

如果网易不行换成,新浪的邮件服务器,同样开启>POP3/SMTP/IMAP功能,密码就用邮箱密码即可
1.2sendmail命令(不是很好用麻烦)

1.安装服务

sudo apt-get install mailutils  
sudo apt-get install sharutils
sudo apt-get install sendmail
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install sendmail-cf

2.安装后,查看sendmail服务是否开启
ps aux |grep sendmail
3. 修改配置
sudo vi /etc/php5/apache2/php.ini

  • 修改

sendmail_path = /usr/sbin/sendmail -i -t
4. 在/etc/hosts 文件中将

127.0.0.1 localhost
# 改为
127.0.0.1 localhost.localdomain localhost 主机名

(1)/etc/mail/sendmail.mc
(a)配置sendmail可以连接任何服务器


DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl         修改Addr=0.0.0.0

(b)添加auth配置(注意字符串前面不是单引号,而是键盘中的波浪号键上的符号)

TRUST_AUTH_MECH(`EXTERNAL
 DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

(c)启用access_db和trust_users

添加FEATURE(use_ct_file)

修改FEATURE(access_db', ,skip')dnl为FEATURE(`access_db')dnl

(2)/etc/mail/access

5.发送邮件

  • 快速发送方式:
    echo "mail content" | mail -s subject test@163.com

  • 以文件内容作为邮件正文来发送:
    mail -s test test@163.com < test.txt

--------------------

 如何在 Linux 上安装 sendmail 命令

sendmail 是一个上广泛使用的通用 SMTP 服务器,你也可以从命令行用 sendmail 发邮件。可以运行下面的命令从官方发行版仓库安装 sendmail 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令 或 APT 命令安装 sendmail。

$ sudo apt-get install sendmail

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 sendmail。

$ sudo yum install sendmail

对于 Fedora 系统,使用 DNF 命令 安装 sendmail。

$ sudo dnf install sendmail

4a) 如何在 Linux 上使用 sendmail 命令发送邮件

sendmail 同样简单易用。使用下面的 sendmail 命令发送邮件。

$ echo -e "Subject: Test Mail\nThis is the mail body" > /tmp/send-mail.txt
$ sendmail 2daygeek@gmail.com < send-mail.txt

5) 如何在 Linux 上安装 ssmtp 命令

ssmtp 是类似 sendmail 的一个只发送不接收的工具,可以把邮件从本地计算机传递到配置好的 邮件主机(mailhub)。用户可以在 Linux 命令行用 ssmtp 把邮件发送到 SMTP 服务器。可以运行下面的命令从官方发行版仓库安装 ssmtp 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令 或 APT 命令安装 ssmtp。

$ sudo apt-get install ssmtp

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 ssmtp。

$ sudo yum install ssmtp

对于 Fedora 系统,使用 DNF 命令 安装 ssmtp。

$ sudo dnf install ssmtp

5a) 如何在 Linux 上使用 ssmtp 命令发送邮件

ssmtp 同样简单易用。使用下面的 ssmtp 命令格式发送邮件。

$ echo -e "Subject: Test Mail\nThis is the mail body" > /tmp/ssmtp-mail.txt
$ ssmtp 2daygeek@gmail.com < /tmp/ssmtp-mail.txt
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐