如何从命令行发送邮件?

评论

ubuntuforums.org/showthread.php?t=780509可能会帮助您。

您也可以使用松木。

您也可以安装msmtp并按照ArchWiki中的说明进行操作

答案太旧了,这太糟糕了。这是一个重要的问题,可以使用一个很好的教程

关于过期的答案:在2020年在gmail设置中启用“缺少安全的应用程序访问权限”后,我从gmail帐户发送了以下答案,以供使用。

#1 楼

尝试安装Mutt电子邮件客户端。其他选项是将emacs与gnus一起使用。其他选项也可用...恕我直言,您应该在问题中使用更多详细信息,或者对问题有几个不同的答案,您将收到:-)

评论


接受此选项是因为它不需要任何配置,并且非常用户友好。

–奥利维尔·拉隆德(Olivier Lalonde)
2010年11月13日21:00

等待。 mutt-用户友好?我今天读过的最疯狂的单线:)

–斯坦
2011年4月21日在22:19



#2 楼



安装ssmtp

sudo apt-get install ssmtp



编辑ssmtp配置文件:

gksu gedit /etc/ssmtp/ssmtp.conf



添加以下文本:

root=username@gmail.com
mailhub=smtp.gmail.com:465
rewriteDomain=gmail.com
AuthUser=username
AuthPass=password
FromLineOverride=YES
UseTLS=YES



运行ssmtp并提供收件人电子邮件地址:

ssmtp recepient_name@gmail.com



提供以下消息详细信息:

To: recipient_name@gmail.com
From: username@gmail.com
Subject: Sent from a terminal!

Your content goes here. Lorem ipsum dolor sit amet, consectetur adipisicing.
(Notice the blank space between the subject and the body.)


按Ctrl + D发送。


还可以将文本放入文件中并按以下方式发送:

ssmtp recipient_name@gmail.com < filename.txt


评论


将我的电子邮件密码暴露在计算机上的某个文件中感觉很奇怪。这样安全吗?

– adams
10 Nov 13'2:50

@oadams不是很安全。使用两步验证来降低风险,或者使用不需要密码的邮件网关(例如ISP的网关)。

–itsadok
2012-3-25 13:54

不要在安装了postfix的服务器上安装ssmtp。后缀将被删除。相反,只需使用sendmail user@example.com
–阿利斯泰尔·巴克斯顿
2012年12月9日在22:05

我想在这里分享的另一个奇怪的事情是,当我使用长而复杂的密码时,它对我不起作用,但是当我将其修改为简单的密码时,它对我来说却是奇怪的,但确实如此。我也从其他人那里听到了同样的声音,但是在尝试发送邮件失败了很多之后尝试了一下,并且我简化了密码,令我惊讶的是,它只是有效;)

–拉贾特·古普塔(Rajat Gupta)
2014年1月1日12:48在

如果Gmail不允许您的服务器访问,请使用命令行浏览器登录服务器上的Gmail。 askubuntu.com/questions/460022/using-terminal-as-a-web-browser

–李圣贤
2014年12月28日下午14:55

#3 楼

在大多数情况下,您不需要配置SMTP服务器,只需在命令行中使用mail(如果尚不存在,请使用sudo apt-get install mailutils安装)。 (或者,如果您在配置了sendmail的服务器上,等等)

marco@dagobah:~$ mail -v marco.ceppi.use@gmail.com
Subject: Hello World!
This is an email to myself.

Hope all is well.
.
Cc: 


您可以通过在线单个.终止邮件。届时mail会提示您输入Cc:信息(或留空),然后mail将打印出有关其正在尝试执行的操作的其他信息,并详细说明从邮件服务器连接,传输和接收数据的过程。 。

评论


我会在答案后面加上“ sudo apt-get install mailutils”,因为它在干净的Ubuntu 10.04安装中不存在。另外,以结束消息。单行不起作用。我不得不用“ Ctrl-D”代替。最后,消息没有通过!

–奥利维尔·拉隆德(Olivier Lalonde)
2010-11-13 20:40

@OlivierLalonde sudo apt-get install mailutils将安装一个SMTP服务器,该服务器是后缀,对于某些人来说可能有点过重。

–vaab
13-10-4在7:47

mailutils也将安装mysql!

–chmike
2014年4月24日在9:16

-v选项不在我的邮件2.99.98安装中,还必须使用Ctrl + D结束

– markmnl
2014年5月17日17:53

请更新此问题,它已过时。

– phil294
17年5月18日在15:55

#4 楼

apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail


用法:

sendemail -f fromuser@gmail.com -t touser@domain.com -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu gmailaccount@gmail.com -xp gmailpassword 


如果不想在命令行中指定密码(通常不是一件好事) ),您可以省略该参数,sendemail会提示您输入密码...并在屏幕上显示该密码,但至少不会出现在您的命令行历史记录中。

评论


使用sendmail从GMail帐户发送邮件非常肯定。谢谢。

–马克·汤姆林
13年5月5日在17:09

在此处查找补丁,不要回显密码。

–阿伦
2015年9月9日下午16:13

我必须使用-s smtp.gmail.com:587指定端口。

–乔·莫宁(Joe Mornin)
16年3月31日在23:19

在命令行之前添加一个空格以不将其保存在命令行历史记录中

– guhur
17年1月5日在18:03

另一种不显示在bash屏幕上的方法:将密码保存到文件,然后从文件保存到环境变量,例如:pass = $(cat my_password); sendemail ... -xp $ name ...,当然,如果您以编程方式调用它,则可以执行类似的操作,例如:ruby system(“ sendemail ... -xp#{File.read'my_password'} ... 。“),它也可能会在第一次失败,您应该收到一封电子邮件到该帐户,建议您“启用安全性较低的应用”,然后它才能正常工作。

–rogerdpack
17-4-25在21:34



#5 楼

mpack是发送文件附件的出色命令行方法。

apt-get install mpack


用法:

mpack -s "file you wanted" ./data.pdf loser@supergoober.cn


#6 楼

您需要一个MTA来发送邮件。为此,请使用后缀:

sudo apt-get install postfix


要发送电子邮件:

echo "test message" | mailx -s 'test subject' myemail@mydomain.com


帮助

评论


您还需要为mailx安装mailutils,对吗?

–尼克
2014年7月15日下午5:26

我希望它真的是如此简单,但是除非您是一个非常特别的人,否则它将无法正常工作。 99.9999%的ISP将忽略来自私人后缀服务器的邮件,因为9.99999十分之十是垃圾邮件发送者。

–塞林
2015年4月13日在1:32



这对我不起作用,当我将其输入终端时,它要求安装mailutils

– Mostafiz Rahman
16-2-14在5:59

继续并安装mailutils。您不需要后缀IIRC。

–uav
18年7月19日在13:51

@Cerin是正确的。但是,对于cron作业,我需要非常简单的邮件发送功能。解决方法是,如果通过gmail帐户接收邮件,则可以为电子邮件设置过滤器(通过关键字或发件人地址),而gmail将允许其发送。

–凯莉·肯德尔(Carrie Kendall)
18/12/3在21:59

#7 楼

安装软件包sendmail,然后键入

sendmail -t receiver@example 


,然后写电子邮件
,然后按Ctrl + D

#8 楼

mail -s "subjet" -a "attchedfile_name" someone@dest_email.com




cat "afile" | mail -s "subject" someone@dest_email.com


评论


只是为了便于测试而添加:回显“ Hello world!” | mail -s“ Hello” mail@example.org

–波恩
2015年9月1日于12:54

如果有人没有mail命令,只需运行:在Ubuntu / Debian中使用sudo apt-get install mailutils或在CentOS / Redhat中使用yum install mailx

–乔凡尼·贝努西(Giovanni Benussi)
16-09-22在13:10

#9 楼

您可以使用TelNet或NetCat从命令行发送电子邮件。
此处介绍了所有内容。
hanoo@hp_laptop% nc 127.0.0.1 25
220 hp_laptop.localdomain ESMTP Postfix
EHLO man
250 hp_laptop.localdomain
MAIL FROM: <netcat@postfix.com>
250 2.1.0 Ok
RCPT TO: <target@host.com>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
This is the body of my mail,
this is the second line...
.
250 2.0.0 Ok: queued as 9C12E7F404


评论


使用此方法时,使用SSL有点困难;)

–雅各布
2012年12月30日23:09

@ iX3只使用swaks,您也可以使用SSL / TLS ;-)

– Germar
15年6月22日在23:28

或openssl s_client -starttls smtp ...

–拉曼
17年7月7日在16:54

#10 楼

如果您尝试从系统发送电子邮件,而whitch并没有运行自己的电子邮件服务器(即台式机系统),则需要安装诸如nullmailer或esmtp之类的东西,它们会将本地邮件转发到“真实”邮件服务器。

作为命令行工具,您可以安装mail或mailx(软件包mailutils,heirloom-mailx或bsd-mailx)。如果您需要附件,请尝试biabam。

评论


我喜欢bsd-mailx作为-E命令和cronjobs

– Northstrider
2015年5月10日下午5:46

#11 楼

我从未尝试过,但是有一个可以发送邮件的mail命令。请参阅人工邮件。

要测试本地电子邮件:

echo message | mail username@localhost


#12 楼

sudo apt-get install sharutils mailutils
uuencode filename filename | mail user@example.com


其中filename相同:它代表输入文件和远程文件。

评论


sudo apt-get install sharutils for uuencode

– Janus Troelsen
2012年10月19日在22:53

mailutils安装mysql! O

–chmike
2014年4月24日在9:15

#13 楼

您可以尝试以下方法:

mail name@mailserver.com -s "Attached file" <<EOF                 
Hi

~| uuencode $HOME/filename.txt filename.txt

EOF


它与GNU Mailutils一起使用,请访问网站以获取更多信息。

#14 楼

运行:

sudo apt-get install ssmtp
sudo -H gedit /etc/ssmtp/ssmtp.conf


需要在其中添加以下内容:

# The user that gets all the mails (UID < 1000, usually the admin)
root=yourusernameofgmail@gmail.com

# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
# See also https://support.google.com/mail/answer/78799
mailhub=smtp.gmail.com:587

# The address where the mail appears to come from for user authentication.
rewriteDomain=gmail.com

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
AuthUser=yourusernameofgmail
AuthPass=yourGmailPassowrd
AuthMethod=LOGIN

# Email 'From header's can override the default domain?
FromLineOverride=yes


运行:

sudo -H gedit /etc/ssmtp/revaliases


在此处输入:

root:yourusernameofgmail@gmail.com:smtp.gmail.com:587


在Gmail上启用“安全性较低的应用程序”:https://support.google。 com / accounts / answer / 6010255?hl = zh-CN

通过在终端上运行以下命令进行测试:

echo "Body of mail is abc" | mail -s "Subject is xyz" "someusername@gmail.com"`


#15 楼

您可以使用cURL。取一个像这样的文件:

From: Sunday <sunday@gmail.com>
To: Monday <monday@gmail.com>
Subject: Tuesday

Wednesday


并发送:

curl \
--netrc \
--mail-rcpt monday@gmail.com \
--upload-file a.txt \
smtps://smtp.gmail.com


https:// myaccount。 google.com/lesssecureapps