email - 电子邮件从 linux shell script 发送邮件

  显示原文与译文双语对照的内容
79 1

我想从 Linux shell script 发送电子邮件。 什么是标准命令我需要设置任何特殊的服务器名?

时间: 原作者:

94 2

如果服务器配置好,如果它有一个,并运行 MTA,就可以使用mail命令。

例如要发送文件的内容,可以执行以下操作:


$ cat/path/to/file | mail -s"your subject" your@email.com



man mail的详细信息。

原作者:
108 3

如果你想要在bash中进行清晰和简单的方法,并且不想使用 catecho,等等,最简单的方法是:


mail -s"subject here" email@address.com <<<"message"



<<< 用于重定向标准输入。 它一直都是bash的一部分。

原作者:
129 2

如果exim和ssmtp都在运行,你可能会遇到麻烦。 ,run只需要简单的smtp客户端发送电子邮件通知,就可以清除最终预先安装的MTA,如 exim exim或者 reinstall postfix 。

然后,它相当直接,只配置 2文件( revaliases和 ssmtp.conf ) 查看 ssmtp doc,在bash或者bourne脚本中使用的方式如下:


#!/bin/sh 


SUBJECT=$1 


RECEIVER=$2 


TEXT=$3 



SERVER_NAME=$HOSTNAME 


SENDER=$(whoami) 


USER="noreply"



[[ -z $1 ]] && SUBJECT="Notification from $SENDER on server $SERVER_NAME" 


[[ -z $2 ]] && RECEIVER="another_configured_email_address" 


[[ -z $3 ]] && TEXT="no text content" 



MAIL_TXT="Subject: $SUBJECTnFrom: $SENDERnTo: $RECEIVERnn$TEXT" 


echo -e $MAIL_TXT | sendmail -t 


exit $? 



显然,不要忘记将防火墙输出打开到smtp端口( 25 ) 。

原作者:
87 0

bash脚本中的另一个选项:


mailbody="Testmail via bash script"


echo"From: info@myserver.test">> /tmp/mailtest


echo"To: john@mywebsite.test">> /tmp/mailtest


echo"Subject: Mailtest subject">> /tmp/mailtest


echo"">> /tmp/mailtest


echo $mailbody>> /tmp/mailtest


cat/tmp/mailtest |/usr/sbin/sendmail -t



  • 每次使用这里脚本时都会覆盖文件 /tmp/mailtest
  • 每个系统的sendmail位置可能不同。
  • 将这里命令用于脚本时,必须使用sendmail命令的绝对路径。
原作者:
53 2

通常,你希望使用 mail 命令使用本地 MTA ( 这么做可以使用SMTP传递到目标,或者将它的转发到更强大的SMTP服务器,例如在ISP上。) 发送邮件。 如果没有本地 MTA ( 虽然对于unix类似系统来说省略一点不同),可以使用一些简单的MTA ( 如 ssmtp ) 。

ssmtp 很容易配置。 基本上,你只需要指定提供程序服务器的SMTP地址:


# The place where the mail goes. The actual machine name is required


# no MX records are consulted. Commonly mailhosts are named mail.domain.com


# The example will fit if you are in domain.com and you mailhub is so named.


mailhub=mail



另外一个选项是使用直接连接到SMTP服务器的无数脚本,然后尝试发布消息,如 Smtp-Auth-Email-ScriptSMTP cli,SendEmail等。

原作者:
...