98

How can I send an email through the UNIX mailx command?

4

10 回答 10

113

一个例子

$ echo "something" | mailx -s "subject" recipient@somewhere.com

发送附件

$ uuencode file file | mailx -s "subject" recipient@somewhere.com

并发送附件并编写消息正文

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com
于 2010-02-17T16:48:18.847 回答
34

给你 :

echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"

PS。正文和主题应放在双引号内。在替换电子邮件地址时FROM_EMAIL删除引号。To_EMAIL

于 2012-12-31T05:48:44.080 回答
6
mailx -s "subjec_of_mail" abc@domail.com < file_name

通过mailx实用程序,我们可以将文件从 发送unixmail server. 在上面的代码中,我们可以看到第一个参数是-s "subject of mail" 第二个参数mail ID,最后一个参数是我们要附加的文件名

于 2016-06-01T10:56:55.157 回答
5
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress

-c 和 -b 是可选的。

-s :指定主题;如果主题包含空格,请使用引号。

-c :将抄送副本发送到以逗号分隔的用户列表。

-b :将密件抄送至用户列表,以逗号分隔。

希望我的回答能澄清你的疑惑。

于 2013-06-26T07:11:18.787 回答
5

使用 MUTT 命令更快

echo "Body Of the Email"  | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)"  -c cc_mail@g.com to_mail@g.com -y
  1. -c 电子邮件抄送列表
  2. -s 主题列表
  3. -y 发送邮件
于 2013-01-08T11:34:35.463 回答
4

从手册页:

发送邮件

要将消息发送给一个或多个人,可以使用参数调用 mailx,这些参数是要向其发送邮件的人的姓名。然后期望用户输入他的消息,然后在一行的开头输入“control-D”。

换句话说,mailx 从标准输入读取要发送的内容,并且可以像正常一样重定向。例如:

ls -l $HOME | mailx -s "The content of my home directory" someone@email.adr
于 2010-02-17T16:46:39.773 回答
3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" abc.xyz@google.com,   \
              cde.mno@yahoo.com, \ < open_files.log
于 2014-12-05T18:32:08.337 回答
1

自定义 FROM 地址

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM
于 2016-12-15T16:49:49.217 回答
1

这是一个多功能功能,用于处理带有多个附件的邮件发送:

enviaremail() {
values=$(echo "$@" | tr -d '\n')
listargs=()
listargs+=($values)
heirloom-mailx $( attachment=""
for (( a = 5; a < ${#listargs[@]}; a++ )); do
attachment=$(echo "-a ${listargs[a]} ")
echo "${attachment}"
done) -v -s "${titulo}" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$1 \
-S from="${2}" \
-S smtp-auth-user=$3 \
-S smtp-auth-password=$4 \
-S ssl-verify=ignore \
$5 < ${cuerpo}
}

函数调用: enviaremail "smtp.mailserver:port" "from_address" "authuser" "'pass'" "destination" "用空格分隔的附件列表"

注意:去掉调用中的双引号

另外请记住在使用该功能之前在外部定义电子邮件的$titulo(主题)和$cuerpo(正文)

于 2018-11-28T21:39:35.070 回答
0

如果您要发送两个以上的人或 DL:

echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com

这里:

  • -s = 主题或邮件标题
  • -r = 发件人邮件或 DL
于 2018-10-26T18:29:39.763 回答