如何从终端发送电子邮件?


169

我知道有一些方法可以在Linux / MacOS中从终端发送电子邮件,但是我似乎找不到有关如何执行此操作的适当文档。

基本上,我的bash脚本需要它,它在每次文件更改时通知我。


3
在这里可能应该注意,某些主机和ISP“关闭”了您发送电子邮件的功能。我想这是一种制止人们通过其发送垃圾邮件和网络钓鱼的尝试
Jim Jeffries

@JimJeffries哪一个?我正在使用Amazon EC2 Web服务器。
ckjbgames

Answers:


125

进入终端并输入man mail帮助。

您将需要设置SMTP

http://hints.macworld.com/article.php?story=20081217161612647

也可以看看:

http://www.mactricksandtips.com/2008/09/send-mail-over-your-network.html

例如:

mail -s "hello" "example@example.com" <<EOF
hello
world
EOF

这将向该电子邮件发送example@example.com主题hello和消息

你好

世界


我只是尝试了一下,对我有用,但是出于好奇我有两个问题。1。<<是什么意思,在线上我已经看到一些带有'<'或'<<的示例。' 它是干什么用的?以及为什么在此处和消息末尾都提供了“文件结束”?

“ << EOF”和“ EOF”标记为“此处文档”。两个EOF之间的文本被视为多行引用的字符串。它在“ man bash”中进行了描述
Joe Inwap

134
echo "this is the body" | mail -s "this is the subject" "to@address"

20
请注意,所有这些解决方案均假设您已本地安装MTA
Miquel

11
@Miquel好点。在Ubuntu中,您可以通过获得先决条件sudo apt-get install mailutils
Earldouglas

3
@詹姆斯,这不是我的MAC((工作(你能帮我吗?

1
通过步骤教程步骤:rianjs.net/2013/08/...
杜桑MADAR

奇怪。尽管我所做的唯一更改是更改了地址,但这给了我一个“ SyntaxError:无效语法”消息。
Jewenile

41

如果您只需要主题行(如警报消息中所示),请执行以下操作:

mailx -s "This is all she wrote" < /dev/null "myself@myaddress"

您可能需要安装mailutils。它可以通过一个包管理器被安装(例如apt install mailutils
杰文塔哈尔

31

可能最简单的方法是使用curl它,不需要安装任何其他软件包,可以直接在请求中对其进行配置。

这是使用gmail smtp服务器的示例:

curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
  --mail-from 'from-email@gmail.com' \
  --mail-rcpt 'to-email@gmail.com' \
  --user 'from-email@gmail.com:YourPassword' \
  -T <(echo -e 'From: from-email@gmail.com\nTo: to-email@gmail.com\nSubject: Curl Test\n\nHello')

这是一个非常好的选择。您可以为您的Google帐户生成应用专用密码,而这只是从您自己的帐户发送电子邮件。很酷!
dakdad

2
好的答案,最后别忘了打开安全性较低的应用程序以使工作myaccount.google.com/lesssecureapps
yubaraj poudel

@aliaksandr应该在他的答案中添加最后一点。默认情况下,此选项(允许访问较不安全的应用程序)处于禁用状态,这并不明显。至少如果您使用的是Gmail帐户作为发件人电子邮件。
EAmez,

18

如果要在Linux上附加文件

echo 'mail content' | mailx -s 'email subject' -a attachment.txt username@stackoverflow.com

4
invalid header为我的附件提供了一条信息。正确的选择是大写-A
Stephane

3
@Stephane根据patrick-haugh的说法,-a是附件开关。-A用于account命令。参见手册页:linux.die.net/man/1/mailx
MiaeKim,

10

在Mac OS或Linux OS的终端中,键入以下代码

mail -s (subject) (receiversEmailAddress)  <<< "how are you?"

举个例子试试

mail -s "hi" abc@example.com <<< "how are you?"<br>

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.