Linux 提供了幾個可讓你經過終端發送電子郵件的命令,下面來展現一些有趣的方法。html
Linux 能夠用多種方式經過命令行發送電子郵件。有一些方法十分簡單,有一些相對會複雜一些,不過仍舊提供了不少有用的特性。選擇哪種方式取決於你想要什麼 —— 向同事快速發送消息,仍是向一批人羣髮帶有附件的更復雜的信息。接下來看一看幾種可行方案:linux
發送一條簡單消息最便捷的 Linux 命令是 mail
。假設你須要提醒老闆你今天得早點走,你可使用這樣的一條命令:git
$ echo "Reminder: Leaving at 4 PM today" | mail -s "early departure" myboss
複製代碼
另外一種方式是從一個文件中提取出你想要發送的文本信息:github
$ mail -s "Reminder:Leaving early" myboss < reason4leaving
複製代碼
在以上兩種狀況中,你均可以經過 -s
來爲郵件添加標題。bash
使用 sendmail
命令能夠發送一封不包含標題的快信。(用目標收件人替換 recip
):服務器
$ echo "leaving now" | sendmail recip
複製代碼
你能夠用這條命令發送一條只有標題,沒有內容的信息:app
$ echo "Subject: leaving now" | sendmail recip
複製代碼
你也能夠用 sendmail
發送一條包含一條標題行的完整信息。不過使用這個方法時,你的標題行會被添加到要發送的文件中,以下例所示:工具
Subject: Requested lyrics
I would just like to say that, in my opinion, longer hair and other flamboyant
affectations of appearance are nothing more ...
複製代碼
你也能夠發送這樣的文件(lyric
文件包含標題和正文):學習
$ sendmail recip < lyrics
複製代碼
sendmain
的輸出也能夠很冗長。若是你感到好奇並但願查看發送系統和接收系統之間的交互,請添加 -v
(verbose)選項。ui
$ sendmail -v recip@emailsite.com < lyrics
複製代碼
mutt
是經過命令行發送郵件的一個很好的工具,在使用前你須要安裝它。mutt
的一個很方便的優點就是它容許你在郵件中添加附件。
使用 mutt
發送一條快速信息:
$ echo "Please check last night's backups" | mutt -s "backup check" recip
複製代碼
從文件中獲取內容:
$ mutt -s "Agenda" recip < agenda
複製代碼
使用 -a
選項在 mutt
中添加附件。你甚至能夠添加不止一個附件 —— 以下一條命令所示:
$ mutt -s "Agenda" recip -a agenda -a speakers < msg
複製代碼
在以上的命令中,msg
文件包含了郵件中的正文。若是你沒有其餘補充的內容,你能夠這樣來代替以前的命令:
$ echo "" | mutt -s "Agenda" recip -a agenda -a speakers
複製代碼
mutt
另外一個有用的功能是能夠添加抄送(-c
)和密送(-b
)。
$ mutt -s "Minutes from last meeting" recip@somesite.com -c myboss < mins
複製代碼
若是你想深刻了解發送電子郵件的細節,你可使用 telnet
來進行電子郵件交互操做。但正如所說的那樣,你須要「學習術語」。郵件服務器指望一系列命令,其中包括自我介紹(EHLO
命令)、提供發件人(MAIL FROM
命令)、指定收件人(RCPT TO
命令),而後添加消息(DATA
)並以 .
結束消息。並非全部的電子郵件服務器都會響應這些請求。此方法一般僅用於故障排除。
$ telnet emailsite.org 25
Trying 192.168.0.12...
Connected to emailsite.
Escape character is '^]'.
220 localhost ESMTP Sendmail 8.15.2/8.15.2/Debian-12; Wed, 12 Jun 2019 16:32:13 -0400; (No UCE/UBE) logging access from: mysite(OK)-mysite [192.168.0.12]
EHLO mysite.org <== introduce yourself
250-localhost Hello mysite [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
MAIL FROM: me@mysite.org <== 指定發件人
250 2.1.0 shs@mysite.org... Sender ok
RCPT TO: recip <== 指定收件人
250 2.1.5 recip... Recipient ok
DATA <== 郵件內容開始
354 Enter mail, end with "." on a line by itself
This is a test message. Please deliver it for me.
. <== 內容結束
250 2.0.0 x5CKWDds029287 Message accepted for delivery
quit <== 結束交互
複製代碼
若是你但願經過 Linux 命令行向一大組收件人發送電子郵件,你可使用一個循環來幫助你完成任務,以下面應用在 mutt
中的例子:
$ for recip in `cat recips`
do
mutt -s "Minutes from May meeting" $recip < May_minutes
done
複製代碼
有不少方法能夠從 Linux 命令行發送電子郵件。有些工具提供了至關多的選項。
via: www.networkworld.com/article/340…
做者:Sandra Henry-Stocker 選題:lujun9972 譯者:Modrisco 校對:wxy