从linux终端发送邮件到一行[关闭]


148

我知道maillinux中有通过命令行发送电子邮件的命令。但是,如何从终端发送一封只有一行的简单电子邮件?

例如:

mail user@gmail.com [subject] [body]

并且是否向用户发送了未经任何确认或提示的电子邮件?

原因是,当java程序中发生特定事件时,我想通过电子邮件向自己发送简短消息。这个想法是我将使用Runtime.getRuntime()…等mail commandjava程序中发送。

我过去曾经cron做过类似的事情,但是当前的实现不使用cron,所以我需要尝试一下。


使用bulk mail CLI,这是一个高效而强大的工具,可通过一个简单的命令将动态电子邮件发送到邮件列表:bulkmail mail!使用这个小巧但功能强大的工具进行快速,迷你,无忧的电子邮件营销💌bulkmail.now.sh
Kumar Abhirup

Answers:


209

mail在Linux系统上可以代表很多程序。您想要的背后是sendmailpostfix。我推荐后者。

您可以通过喜爱的软件包管理器进行安装。然后,您必须对其进行配置,完成后,您可以像这样发送电子邮件:

 echo "My message" | mail -s subject user@gmail.com

有关更多信息,请参见手册。

就配置后缀而言,互联网上有很多文章介绍如何做。除非您在具有注册域的公共服务器上,否则通常需要将电子邮件转发到可以从其发送电子邮件的SMTP服务器。

例如,对于gmail,请遵循 http://rtcamp.com/tutorials/linux/ubuntu-postfix-gmail-smtp/ 或任何其他类似的教程。


4
Postfix功能强大,但是如果您只需要发送电子邮件,请尝试“ ssmtp”。该软件包较小,并且不运行诸如postfix之类的守护程序。它支持安全协议,并可以与gmail一起使用。
oᴉɹǝɥɔ

6
“当前未安装程序'mail'。您可以通过键入以下内容来安装它:apt-get install mailutils”
Tom

更轻巧:包装nullmailerbsd-mailx。对于大多数工作站来说足够了:)并nullmailer包括一个sendmail接口,您甚至可以跳过bsd-mailx软件包并使用Hengjie的方法
Izzy

@oᴉɹǝɥɔ ssmtp已过时。使用msmtp代替。
马特M.18年


32
echo "Subject: test" | /usr/sbin/sendmail user@domain.com

这样一来,您就可以在一个命令行中执行此操作,而不必回显文本文件。此答案以@ mti2935的答案为基础。所以信誉就在那里。


2
只需添加主题和正文的答案即可:echo -e“主题:在此处测试\ n \ n正文内容\ n” | sendmail user@domain.com
emvidi

13

您也可以使用sendmail:

/usr/sbin/sendmail user@domain.com < /file/to/send

注意:我有Postfix + S-Nail。这对我有用。首先,我使用“ Rohit Gupta”答案并下载了邮件实用程序,然后执行了您的所有操作。
Mohammed Baashar

13

对于Ubuntu用户:首先,您需要安装mailutils

sudo apt-get install mailutils

如果您使用的是gmail或smtp,请设置一个电子邮件服务器。点击此链接。然后使用此命令发送电子邮件。

echo "this is a test mail" | mail -s "Subject of mail" username@domain.com

如果您使用的是gmail,但仍收到一些身份验证错误,则需要更改gmail的设置:

从此处打开访问权限以获取不太安全的应用



-3

发送简单邮件:

$ mail -s "test message from centos" recipient@example.com
hello from centos linux command line

Ctrl+ D完成


2
他正在询问在线命令。
罗希特·古普塔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.