首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用自动邮件轻松传达 AIX 信息

使用自动邮件轻松传达 AIX 信息

本文将展示创建和发送电子邮件的各种不同方式,包括:
  • 从命令行创建和发送电子邮件
  • 地址伪装
  • 处理一个或多个附件
  • 嵌入 HTML 或图像链接
很多电子邮件客户端跟 AIX 配合得很好,并具有方便的命令选项 -- 有些选项比真正的 sendmail 服务还好。然而,这里将展示 sendmail/mail 代理,因为它是 AIX 随附的标准电子邮件代理。
注意,下面的讨论假设 sendmail 被配置为转发电子邮件。要让基本的 sendmail 正常运行,请确保您的 /etc/mail/sendmail.cf 中有智能中继指向邮件中继服务器。如果它没有配置为处理电子邮件,那么请用下面这个命令来做这件事情:
1
DS <some_mail_relay_host>




此外,为了确保您的 sendmail 知道它的全限定主机名,请使用:
1
Dj <your_FQDN>




在本文中,我使用 email_addr 代表发送方电子邮件地址。请用您实际的目标电子邮件地址(比如 david.tansley@btinternet.com)来替代。
单个命令行好,我们开始用脚本来发送电子邮件吧。最基本的电子邮件发送方式是:
1
$ echo "tester" | mail  email_addr




这会将内容中的单词“tester”发送给上面的接收方。当然,我们还可以添加接收方,将之发送给多个接收方,比如:
1
$ echo "tester" | mail "email_addr, email_addr_2"




从命令行使用多个地址时,请将地址放在引号中。这确保电子邮件地址可以被正确解析成电子邮件命令。这里展示的格式可能会用在 /etc/inittab 文件中,系统重启或关闭导致重新验证邮箱时将激活该文件。您知道邮箱正常并已联网:
echo "system is up" | mail -s "`hostname` system is up" "email_addr"
注意,在该输出中,我指定了 -s 选项,这表示主题行内容。若要发送给很多地址,可以在 /etc/mail/aliases 文件中创建一个别名列表,也可以创建一个变量列表,如下所示:
1
2
$ list="email_addr email_addr_2"
$ echo "tester" | mail -s "`hostname` system is up" $list




伪装发送方有些情况下,您可能不想显示电子邮件来自的域。也许您不想接收方回复来自不同来源的信息邮件或内容。不管何种原因,如果这是一个永久更改,您无需编辑 sendmail.cf 文件,尽管愿意的话您也可以编辑。使用下面的脚本选项,可以在 sendmail 中完成伪装:
   -t 接收方阅读的信息
   -F 设置发送方的名称
   -f 设置邮件来自的名称
1
2
3
4
5
6
7
8
#!/bin/sh
sendmail -t -F 'Webmaster' -f 'webmaster@email.com' <<mayday
From: webmaster <webmaster@email.com>
To:email_addr
Subject:
Feedback Form
Hello World !
mayday




该脚本执行时,会将电子邮件发送到包含在“To:”行的接收方。在接收方的邮箱中,邮件将显示为来自 webmaster@email.com。还是在该脚本中,我使用了“<<”语句来括住电子邮件,分隔符是“mayday”。分隔符单词“mayday”之间的全部代码用于将包含在该块中的信息送入到 sendmail 命令交互过程中。
主体内容要提供命令清单输出,您可以将这个命令以管道的方式输出到邮件中,也可以将它嵌入在电子邮件内容中。下面这个命令将 df 命令的输出发送到电子邮件主体中:
1
df | mail -s "output of df command" email_addr




此外,您也可以使用脚本来做这件事情。下面再次使用“<<”语句来提供您想要发送到邮件代理的信息。包含在邮件主体中的内容将会是 df 命令的输出和 /etc/hosts 文件。使用命令替代的格式是:
1
$(command)




这是使用命令替代(command substitution.)正确地展开和执行命令输出所必需的。
1
2
3
4
5
6
7
8
#!/bin/sh
list="email_addr email_addr_2"
mail -s "`hostname` Here's your report" $list <<mayday
Hi Guys,
Included is df and /etc/hosts file..
$(df -g)
$(cat /etc/hosts)
mayday




附件给电子邮件添加附件是一件很平常的事情,尤其是当您希望包含一个来自刚才运行的过程的报告或文档时。 总之,电子邮件很大程度上就像报告处理的一部分。要附加文件,无论是二进制还是文本文件,都可以使用 uuencode 实用工具。Uuencode 是通过网络传输二进制数据或文件的实际方法。使用的格式是:
1
uuencode <source_file> <attached_filename_in_email>




可以只为 uuencode 指定一个参数,默认为是电子邮件中附加的文件。然而,同时指定源文件和附加文件名是一个好习惯,哪怕它们的名称相同。要使用电子邮件单个命令行将一个名为 file1.txt 的文档作为附件发送:
1
2
uuencode /home/dxtans/file1.txt file1.txt |mail -s "Attached is the file1.txt.." \
         email_addr




在该输出中,输入源是:/home/dxtans/file1.txt,附加的文件名是 file1.txt。发送二进制文件的原理与此相同。在下面的输出中,发送的是二进制文件 unzip:
1
uuencode /opt/software/unzip unzip |mail -s "Attached is the unzip binary" email_addr




很好,但是如果必须发送多个附件呢?没问题。借助邮件选项,您可以通过使用特殊符号“~<”,然后再指定“!”符号,来指定邮件中处理的文件。邮件会将这看作一个命令,并将它执行到电子邮件中。例如,如果您想要在一个邮件主体中附加三个文件,您可以使用一个“<<”语句,以 mayday 作为分隔符:
1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
list="email_addr"
mail -s "here are the files" $list <<mayday
hello,
Here are the files attached .
DT

~<!uuencode /home/dxtans/tansley.jpg tansley.jpg
~<!uuencode /home/dxtans/badge.jpg badge.jpg
~<!uuencode /home/dxtans/file1.txt file1.txt
mayday




本例将附加两个名为 tansley.jpg 和 badge.jpg 的二进制图像文件以及一个名为 file1.txt 的文本文件。
HTML要发送 HTML 电子邮件,请确保内容类型是 text/html,且编码被设置为 7 位。否则,当接收方打开电子邮件时,HTML 无法正确显示。这里,您必须指定 sendmail 作为处理引擎。还是使用“<<”语句插入 HTML 代码。下面的命令显示一个 HTML 表,表格中有 alpha、bravo 和 Charlie 等名字。我知道这比较简单,但是它很好地演示了如何在电子邮件中包含 HTML 代码行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh
to='email_addr'
sendmail -t <<mayday
Toto
Subject: here are it is
Content-Type: text/html
Content-Transfer-Encoding:7bit
<body>
<hr>
<font color="blue" size=3><b>
Do you like the image ?
<br>Here is a border with names<br>
<table border=4 cellpadding=8>
<tr> <td>alpha</td> <td>bravo</td> <td>charlie</td> </tr>
</table>
<br>
David
</font></body>
mayday




图 1 展示了上面的电子邮件打开时的样子。
图 1您也可以在 HTML 代码中包含嵌入的图像,但是要确保接收方可以解析该 Web 地址。例如,若想要包含以下图像:
1
<img src="//my_webserver/icons/picture.gif">




那么当邮件打开时,服务器 my_webserver 必须能够从接收方电子邮件中解析和提供该图像。
生成电子邮件是一种非常好的方式,可以将报告或命令输出明白无误地传达给用户。它们可以被用作一个单个命令行或者利用 shell 脚本。
返回列表