如何从命令行发送邮件?

Oli*_*nde 247 email command-line

如何从命令行发送邮件?

Sid*_*Sid 167

  1. 安装ssmtp 安装ssmtp

    sudo apt-get install ssmtp
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑 ssmtp 配置文件:

    gksu gedit /etc/ssmtp/ssmtp.conf
    
    Run Code Online (Sandbox Code Playgroud)
  3. 附加以下文本:

    root=username@gmail.com
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
    Run Code Online (Sandbox Code Playgroud)
  4. 运行 ssmtp 并提供收件人电子邮件地址:

    ssmtp recepient_name@gmail.com
    
    Run Code Online (Sandbox Code Playgroud)
  5. 提供消息详细信息如下:

    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.)
    
    Run Code Online (Sandbox Code Playgroud)
  6. Ctrl+D发送。


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

ssmtp recipient_name@gmail.com < filename.txt
Run Code Online (Sandbox Code Playgroud)

  • 让我的电子邮件密码暴露在计算机上的某个文件中感觉很奇怪。这安全吗? (29认同)
  • 不要在安装了 postfix 的服务器上安装 ssmtp。后缀将被删除。相反,只需使用 sendmail user@example.com &lt; file.txt 即可使用 postfix 或 ssmtp。 (6认同)
  • @oadams 不是很安全。使用两步验证来降低风险,或使用不需要密码的邮件网关,如您的 ISP。 (2认同)
  • 我想在这里分享的另一件奇怪的事情是,当我有一个长/复杂的密码时,它对我不起作用,但当我将其修改为简单的密码时,它就起作用了,奇怪但真实。我也从其他人那里听到了同样的事情,但在多次尝试发送邮件失败后尝试了它,并且一旦我简化了密码,令我惊讶的是,它就起作用了 ;) (2认同)

Mar*_*ppi 101

大多数情况下,您不需要配置 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: 
Run Code Online (Sandbox Code Playgroud)

你用一个.在线来终止消息。这时候mail会提示您Cc:输入信息(或留空),mail然后打印出有关它尝试执行的操作的附加信息,以及详细说明连接、传输和从邮件服务器接收数据的处理过程。

  • 我会附加答案以包括“sudo apt-get install mailutils”,因为它不存在于干净的 Ubuntu 10.04 安装中。此外,用 . 单行不起作用。我不得不“Ctrl-D”代替。最后,消息没有通过! (30认同)
  • -v 选项不在我安装的邮件 2.99.98 中,也必须使用 Ctrl+D 来结束 (18认同)
  • @OlivierLalonde ``sudo apt-get install mailutils`` 将安装一个 SMTP 服务器,它是 ``postfix`` ,这对某些人来说可能有点过重。 (7认同)
  • mailutils 也会安装 mysql! (6认同)
  • 请更新此问题,它已过时。 (2认同)

jet*_*jet 55

apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail
Run Code Online (Sandbox Code Playgroud)

用法:

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 
Run Code Online (Sandbox Code Playgroud)

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

  • 在命令行前添加一个空格以不将其保存在命令行历史记录中 (8认同)

crn*_*sta 39

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

  • 等待。mutt - 用户友好?我今天读过的最疯狂的单行诗:) (22认同)
  • 接受这个,因为它不需要任何配置并且非常用户友好。 (2认同)

One*_*ero 24

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

sudo apt-get install postfix
Run Code Online (Sandbox Code Playgroud)

发送电子邮件:

echo "test message" | mailx -s 'test subject' myemail@mydomain.com
Run Code Online (Sandbox Code Playgroud)

帮助

  • 我希望它真的这么简单,但除非你是一个非常特别的人,否则这是行不通的。99.9999% 的 ISP 会忽略来自私人 postfix 服务器的邮件,因为 10 次中有 9.99999 次他们是垃圾邮件发送者。 (4认同)
  • 继续安装mailutils。您不需要后缀 IIRC。 (2认同)

小智 23

mpack 是发送文件附件的优秀命令行方式。

apt-get install mpack
Run Code Online (Sandbox Code Playgroud)

用法:

mpack -s "file you wanted" ./data.pdf loser@supergoober.cn
Run Code Online (Sandbox Code Playgroud)


Mhd*_*wan 16

安装包sendmail然后输入

sendmail -t receiver@example 
Run Code Online (Sandbox Code Playgroud)

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


小智 11

mail -s "subjet" -a "attchedfile_name" someone@dest_email.com
Run Code Online (Sandbox Code Playgroud)

或者

cat "afile" | mail -s "subject" someone@dest_email.com
Run Code Online (Sandbox Code Playgroud)

  • 如果有人没有 mail 命令,只需运行: Ubuntu/Debian 中的 `sudo apt-get install mailutils` 或 CentOS/Redhat 中的 `yum install mailx` (4认同)

han*_*noo 9

您可以使用TelNetNetCat从命令行发送电子邮件。

一切都在这里解释。

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
Run Code Online (Sandbox Code Playgroud)

  • 使用这种方法时,使用 SSL 有点困难;) (2认同)

dde*_*eke 7

如果您尝试从系统发送电子邮件,而该系统不运行自己的电子邮件服务器(即桌面系统),则您需要安装类似nullmaileresmtp 的东西,它们会将您的本地邮件转发到“真实”邮件服务器。

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


小智 6

sudo apt-get install sharutils mailutils
uuencode filename filename | mail user@example.com
Run Code Online (Sandbox Code Playgroud)

哪里filename相同:它代表输入文件和远程文件。

  • mailutils安装mysql!oO (3认同)

dv3*_*0ea 5

我从未尝试过,但有一个mail可以发送邮件的命令。见人邮件

要测试本地电子邮件:

echo message | mail username@localhost
Run Code Online (Sandbox Code Playgroud)