Linux邮件和mailx命令教程和示例,并从命令行发送电子邮件

Linux有很多与电子邮件相关的工具、服务和应用程序。电子邮件的体系结构与标准客户机服务器不同。我们将研究一个名为mailx的基于命令行的邮件应用程序。 mailx 更高级版本的 mail 工具。mailx命令支持MIME、IMAP、POP3、SMTP和S/MIME协议以及基于Berkeley Mail 8.1的Mail命令。

null

一般概念

如前一段所述,电子邮件系统比标准的客户机-服务器体系结构要复杂一些。在继续之前,我们应该先学习一些术语

  • Mail Client 是用户直接用来发送和获取电子邮件的应用程序。邮件客户端连接到邮件传输代理以传输电子邮件。
  • Mail Transfer Agent (MTA) 是一个用于接收、发送和存储邮件消息的中介组件。有一些协议用于完成这些任务,如smtp、pop3、imap等。

下面是一些简单电子邮件传输的架构视图。

Mail Client Sender --> MTA of sender --> MTA receiver --> Mail Client Receiver

安装mailx命令

Linux发行版提供了两个mailx命令,一个来自默认安装的mailutils包,另一个来自bsd mailx包。为了正常工作,我们应该安装bsd mailx包,如下所示。

$ sudo apt install bsd-mailx
图片[1]-Linux邮件和mailx命令教程和示例,并从命令行发送电子邮件-yiteyi-C++库
安装mailx命令

救命

有关mailx命令的简要帮助信息可以使用 --help 选项如下。

$ mail --help
Mail Help
邮件帮助

发送电子邮件

我们将只发送一些文本而不提供额外的信息。这也是最快的邮寄方式。在本教程中,我们将简单地使用本地邮件提供程序,但在SMTP配置部分,我们将处理一个SMTP 服务器。在本例中,我们将为邮件的主题部分提供 -s 选项,我们还将提供电子邮件地址,这是本地用户命名 ismail

$ mail -s "Hello World" [email protected]
Send Email
发送电子邮件

有个警告说 Null message body; hope that's ok . 我们认为没关系。

相关文章: 如何为Tcpdump指定主机、端口和协议?

阅读电子邮件

在前面的示例中,我们已经向本地系统用户发送了邮件 ismail . 当用户 ismail 登录到系统,他会收到一条消息,说他有一封电子邮件。此电子邮件可以从 /var/mail/ismail 哪里 ismail 用户名是否简单 cat 命令。

$ cat /var/mail/ismail
Read Email
阅读电子邮件

从文件读取电子邮件正文

在发送电子邮件时,邮件的正文部分会出现。这个身体部位可以手写。但如果这是一项长期重复的任务,我们不想做,总是有一个替代品。只需将内容重定向到 mail 命令如下。在这个例子中 body.txt 文件包含邮件的正文部分。这个文件也可能是一个html文件。

正文.txt

Hi poftut  How are you? I hope your pageviews are good.  Have a high sessioned day

我们送

$ mail -s "Hello World" [email protected] < body.txt

还有另一种发送邮件的方法,就是用下面的管道重定向正文内容。

$ cat body.txt | mail -s "Hello World" [email protected]

设置多个收件人

另一个有用的特性 mail 命令通过简单地分隔收件人电子邮件来提供多个收件人。在本例中,我们将向 [email protected] [email protected] . 请记住,可能有两个以上的收件人。

$ mail -s "Hello World" [email protected],[email protected] < body.txt
Set Multiple Recipient
设置多个收件人

如我们所见,邮件通知出现得很快。

将抄送和密件抄送添加到邮件

Carbon Copy - CC Blind Carbon Copy - BCC 用于以可见或隐藏的方式将邮件副本发送给其他收件人。提供CC使用 -c 带有电子邮件地址的选项。提供密件抄送使用 -b 带有电子邮件地址的选项。在本例中,我们将向 [email protected] 具有 [email protected] 在CC和 [email protected] 密件抄送。从这个例子中,我们将使用相同的选项,但更多的功能 mailx 命令。

$ mailx -s "Hello World" [email protected] -c [email protected] -b [email protected]  < body.txt
CC and BCC
抄送和密件抄送

如果我们看我们的邮箱,我们可以看到邮件和抄送,但不能看到密件抄送

相关文章: 如何使用OpenSSL s U客户端来检查和验证HTTPS Web服务器的SSL/TLS?

指定发件人姓名和地址

众所周知,我们可以明确设置发件人姓名和电子邮件地址。我们将使用 -r 选项设置发件人姓名和电子邮件地址。指定电子邮件地址,如 < [email protected] > . 在本例中,我们将发送者名称写为 İsmail Baydan 发件人地址为 [email protected]

$ mailx -s "Hello World" [email protected] -r "İsmail Baydan<[email protected]>"
Specify From Name And Address
指定发件人姓名和地址

发件人地址和名称可以显式查看。

指定“答复”地址

“回复地址”用于设置收件人要回写的邮件的返回地址。这对于自动系统尤其有用,在自动系统中,返回将是一个特定的电子邮件地址 -S 选项。在本例中,我们将把reply to address设置为 [email protected]

$ mailx -s "Hello World" -S replyto="İsmail Baydan <[email protected]>" [email protected]

添加附件

附件是电子邮件的重要部分。Emai用户通常会将一些文档、图像、zip文件附加到电子邮件中发送给接收者。在GUI电子邮件客户端中,可以很容易地复制粘贴或选择文件。但我们如何在命令行界面中发送电子邮件附件呢。附件可以添加为 -a 带有附件路径的选项。在本例中,我们将添加文件名 a.txt 我们的邮件附件。

$ mailx -s "Some File" [email protected] -a a.txt
Attachment
附件

使用外部SMTP服务器

到目前为止,我们已经使用了本地邮件系统。本地邮件系统是Linux操作系统提供的一种简单机制。在现实世界中,电子邮件系统通常使用SMTP、POP3、IMAP服务。但是为了发送电子邮件,我们需要为mail和mailx命令设置SMTP服务器。SMTP configurationt放入命令行并有一些文本要键入。

$ mailx -v -s "This is the subject" -S smtp="mail.example.com:587"  -S smtp-use-starttls  -S smtp-auth=login  -S smtp-auth-user="[email protected]"  -S smtp-auth-password="1q2w3e" -S ssl-verify=ignore  [email protected]

我们将看看这个命令选项和参数的含义。

  • -S smtp="mail.example.com:587" 指定SMTP服务器主机名或IP地址和端口号(587)
  • -S smtp-use-starttls 指定使用tls加密使通信加密和安全
  • -S smtp-auth=login 指定将进行何种类型的SMTP身份验证。
  • -S smtp-auth-user=" [email protected] " 指定将用于身份验证的用户名
  • -S smtp-auth-password="1q2w3e" 指定密码。确保您使用的系统是安全的,因为提供了明文密码。
  • -S ssl-verify=ignore 这用于忽略SMTP服务器的ssl验证。此选项用于防止自签名ssl问题。但这使得行动不那么安全。

相关文章: 什么是SMTP端口号(255874652525)?

调试、故障排除和详细输出

一般的假设是,发送电子邮件时会出现问题。所以我们需要调试以获得问题的细节。两者皆适用 mail mailx 命令。这个 -v 选项可用于调试邮件操作。

$ mailx -v -s "Some File" [email protected] < body.txt

从命令行使用mailx命令列出电子邮件

我们使用mailx命令列出并阅读已发送的电子邮件,如下所示。该列表提供诸如发件人、日期、时间、大小和主题部分等信息。

$ mailx
图片[9]-Linux邮件和mailx命令教程和示例,并从命令行发送电子邮件-yiteyi-C++库
从命令行使用mailx命令列出电子邮件

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享