題:
如何從命令行發送電子郵件?
michelemarcon
2011-04-19 14:57:09 UTC
view on stackexchange narkive permalink

如何從命令行或腳本發送電子郵件?我希望能夠通過傳遞接收方和消息來以編程方式運行腳本。

如果您正在編寫程序,則許多語言都有處理電子郵件的庫
七 答案:
TJ Luoma
2012-02-13 02:15:28 UTC
view on stackexchange narkive permalink

我知道有兩個程序,可以輕鬆地將Mac配置為從命令行發送電子郵件。

我已經為兩個程序編寫了HOWTO:

在這兩者中,我建議使用 msmtp

配置非常複雜,我不確定是否應該在此處複製所有步驟,但是我會提到如果您使用 Homebrew,則可以使用

brew來安裝msmtp。安裝msmtp --with-macosx-keyring

然後剩下的只是設置相關的配置文件了

第一個是 / usr / local / etc / msmtprc

 #Begin msmtprc#設置所有以下帳戶的默認值。defaultstls onlogfile〜/。 msmtp.log#第一個gmail地址帳戶example@gmail.comhost smtp.gmail.comport 587protocol smtpauth on example@gmail.comuser example@gmail.comtls ontls_starttls on#下一行至關重要:您必須指向正確的安全GMail的rity證書。#如果不起作用,請訪問http://msmtp.sourceforge.net/documentation.html上的mstmp文檔#以獲取幫助##下一行應全部排在一行上:tls_trust_file / path / to / Thawte根目錄/ Thawte SSLWeb服務器根目錄/ thawte高級服務器CA / Thawte高級服務器CA.pem#設置默認帳戶#您需要為Mailaccount默認設置默認帳戶:example@gmail.com# end msmtprc  

請注意, tls_trust_file 行應指向您從 https://www.thawte.com/roots/index.html

我將其放入〜/ Dropbox / Thawte Roots 中,以便可以在所有Mac上使用它。

然後您需要〜/ .mailrc 文件,以說明msmtp二進製文件所在的位置。如果您使用 brew ,它將是 / usr / local / bin / msmtp ,因此文件如下所示:

  set sendmail = “ / usr / local / bin / msmtp”  

最後但至關重要的一步是確保您的鑰匙串具有與msmtp期望的格式完全相同的信息:

我認為這涵蓋了大多數細節。如果需要更多詳細信息,請參見 http://www.tuaw.com/2010/05/04/msmtp-a-free-tool-to-send-email-from-terminal/

顯然,以上腳本中的示例假定您使用的是Gmail,但也可以將其用於其他服務器。將`example@gmail.com`更改為您的Gmail或Google Apps電子郵件地址。
我終於可以通過使用以下網址提供的Google Roots來使其工作:https://pki.google.com/roots.pem。如果您在信任文件和Gmail方面遇到問題,可能會解除阻止您的權限。
如果配置(msmtprc)文件的位置存在問題,請在macOS 10.13.3上使用Homebrew安裝後,msmtp在我的主目錄中查找它:`〜/ .msmtprc`。
vartec
2011-04-19 15:31:22 UTC
view on stackexchange narkive permalink

郵件-s subject someone@example.com 鍵入您的消息,然後按 Ctrl + D 完成

如果您尚未將系統配置為告訴它在哪裡發送電子郵件,那麼實際上可能不會發送電子郵件,它將堆積在我的Mac上。
-1:這個答案是不完整的。如@TJLuoma所述,除非在執行此命令之前配置了系統,否則此命令將不起作用。
TJ Luoma和melvkim是不正確的:開箱即用的標準OS X系統可以正常發送電子郵件,而無需進行配置。OS X計算機將充當其自己的SMTP服務器,在DNS MX中查找目標域並將郵件發送到該域。
@JohnEDee至少由於您不希望接收方回復來自`username@users_mac.local`的郵件而已...
@patrix,正確,它使用登錄帳戶的長用戶名和Mac自身生成的“ .local”地址形成“發件人”。我一直在用它來通過shell腳本流程向我和我的員工發送通知電子郵件。TJ Luoma和melvkim分別說“將不起作用”和“實際上不發送電子郵件”,但這兩種方法都是不正確的。
這對我有用。我從 @ .localdomain收到了gmail(web)垃圾郵件文件夾中的電子郵件
啊,對我來說也是垃圾郵件
有沒有一種方法可以使我完成這項工作而無需按Ctrl + D按鈕?我想自動處理電子郵件,因此應該手動干預。
@RamarajT,是的,您可以將echo命令的輸出通過管道傳遞到郵件,這樣就不需要Cmd-D。例如:`echo這將是電子郵件的正文|郵件-s“這是主題” destination@example.com`
謝謝@JohnEDee
Henry vM
2012-02-13 04:10:36 UTC
view on stackexchange narkive permalink

發送郵件的最基本方法是通過與提供商/網絡的smtp服務器的telnet會話。與服務器聯繫後,在執行每條命令之後,服務器將以“ 250 OK”之類的命令接受命令,或者是否以錯誤消息答复。

所有詳細信息都可以在RFC2821中找到-簡單Google的郵件傳輸協議。這種基本方式非常適合測試發送郵件時為什麼會出錯,但是我認為將其編寫為完整的證明非常複雜。

首先在您的計算機上獲得一個命令行界面通過啟動終端計算機。然後一個接一個地繼續以下命令。

打開到提供程序/網絡的smtp服務器端口25的telnet會話

  telnet name_or_ip_of_smtp_server 25  

問好,再加上提供商/網絡的互聯網名稱,例如abc.com

  EHLO name_of_your_network  

a from = return地址是必需的,<和>是命令的一部分

  MAIL FROM:<your_email_adress>  

給出一個或多個目的地,<和>是一部分

  RCPT TO:<destination_email_address>RCPT TO:<second_destination_email_address>RCPT TO:<etc_destination_email_address>  tell> 

code> DATA

現在服務器應該回答您可以開始發送郵件並進入數據模式

 您的數據更多數據等 現在> 

在一行上僅用點作為字符完成點的數據。

  

服務器返回命令模式,因此您可以退出

  QUIT  
Jonny
2013-05-24 09:40:55 UTC
view on stackexchange narkive permalink

這對我有用,它是在考慮Lion的情況下編寫的,但適用於Mountain Lion。順便說一句,這是使用Gmail,所以如果您不是...

您無需下載任何內容! (只需設置一個Gmail帳戶)

http://www.anujgakhar.com/2011/12/09/using-macosx-lion-command-line -mail-with-gmail-as-smtp /

為Gmail SMTP配置Postfix編輯文件/etc/postfix/main.cf

sudo vim / etc / postfix / main.cf  

,然後在註釋掉的中繼主機下面添加以下內容:-

  relayhost = [smtp.gmail.com]: 587smtp_sasl_auth_enable =是postfix / sasl_passwd  

,然後輸入以下內容:-

  [smtp.gmail.com]:587 username@gmail.com:password  

運行以下命令

  sudo chmod 600 / etc / postfix / sasl_passwdsudo postmap / etc / postfix / sasl_passwdsudo launchctl stop org.postfix.mastersudo launchctl start org.postfix .master  

您已完成……。
現在,您應該可以從命令行中發送電子郵件了,例如將目錄的內容作為樹發送到電子郵件地址

  tree / var / www / somefolder |郵件-s“內容” your@yourdomain.com  
PS:從Terminal或在腳本中手動運行此程序時,此功能非常有用。但是,在這一點上,我仍然遇到這樣的問題:啟動腳本時,永遠不會發送郵件。我想這與啟動的作業設置有關。
我知道了參見http://apple.stackexchange.com/questions/92406/mail-does-not-work-in-scripts-launched-with-launchd
+1感謝您添加此內容。真的幫助了我。我真正需要的只是main.conf中的relayhost條目(這是我自己的LAN上的SMTP服務器)。
以上可能已過時。我必須按照http://stackoverflow.com/a/26451135/197789添加“ smtp_sasl_mechanism_filter = plain”,以使其正常工作。否則,我會收到“通用失敗”錯誤。
rouble
2016-07-30 01:24:01 UTC
view on stackexchange narkive permalink

您可能想簽出 postfixconf,它啟用並配置OS X以從命令行(使用您的輸入)發送電子郵件。

它基於在Web上此處此處此處的文檔詳細介紹。

我可以確認此腳本可在macOS 10.13.6上運行。我可以使用我的fastmail帳戶輕鬆設置它。現在`mail someone@some.host`可以按預期發送電子郵件。
Sojourner
2012-11-11 05:34:55 UTC
view on stackexchange narkive permalink

mtcmail是另一種選擇: http://www.macupdate.com/app/mac/33505/mtcmail-cli

[忽略此附加文本。新增原因:正文必須至少包含30個字符;您輸入了27。]

Pierre Watelet
2011-04-19 15:13:19 UTC
view on stackexchange narkive permalink

由於它是基於Unix的,因此可以使用 sendmail 命令。

-1:sendmail是SMTP服務器命令


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...