【发布时间】:2013-12-23 22:23:21
【问题描述】:
刚接触 unix 并学习它的谈话和行动。 我正在.ksh 中编写脚本,并且需要发送带有消息的邮件。 目前在我的脚本中使用这个命令:
mailx -s"File not found" abc@def.com
此命令可以帮助我获得主题和收件人姓名。 我的问题是我怎样才能写一条消息。因为每次我运行脚本时它都会暂停并要求我输入消息然后执行,我想预先包含消息,这样脚本就不会在两者之间暂停。
【问题讨论】:
刚接触 unix 并学习它的谈话和行动。 我正在.ksh 中编写脚本,并且需要发送带有消息的邮件。 目前在我的脚本中使用这个命令:
mailx -s"File not found" abc@def.com
此命令可以帮助我获得主题和收件人姓名。 我的问题是我怎样才能写一条消息。因为每次我运行脚本时它都会暂停并要求我输入消息然后执行,我想预先包含消息,这样脚本就不会在两者之间暂停。
【问题讨论】:
echo 'Message body goes here' | mail -s 'subject line goes here' email@provider.com
【讨论】:
由于 mailx 将正文作为标准输入的输入,您可以将正文通过管道传递给它:
echo "Hello World" | mailx -s"File not found" abc@def.com
或者使用here document
mailx -s"File not found" abc@def.com << END_TEXT
Hello World
END_TEXT
【讨论】:
在命令行或脚本中试试这个:
echo "This is the message." | mailx -s "Subject" abc@def.com
您可以使用来自文件的预定义消息:
cat message.txt | mailx -s "Subject" abc@def.com
【讨论】:
除了mailx(在其他答案中提到),您还可以使用sendmail:
cat <<EOF | sendmail -t
To: recipients-mailaddress
From: your-mailaddress
Subject: the-subject
mailtext
blabla
.
EOF
如果 sendmail 不在您的路径中,您可能需要添加完整路径。例如。 /usr/sbin/sendmail 或 /usr/lib/sendmail。
更新:
另见question
【讨论】:
如果您还想在要发送的邮件中添加附件。给你:
echo 'Type Message body' | mailx -s 'Type subject' -a path/filename.txt email@provider.com
示例:
echo 'PFA report' | mailx -s 'Today's Report' -a `path`/report1306.txt xyz@gmail.com
【讨论】:
预先定义邮件内容,然后这样做:
mailx -s"File not found" abc@def.com < mailcontent
【讨论】: