2015-09-22 30 views
0

我想使用telnet服務發送郵件正文中的日誌文件的內容。我一直在使用命令行下面的命令來觸發郵件:使用telnet發送郵件時添加文件的內容

telnet mydomain.com 25 
helo mydomain.com 
mail from:senderdomain.com 
rcpt to:recieverdomain.com 
data 
Hi.. This is for test! 
. 
quit 

如何添加一個主題,在此郵件的文本文件的內容?請幫忙!

回答

0

您將無法使用普通的telnet會話輕鬆完成此操作。

如果您需要發送郵件附件,您需要遵循RFC 2045, MIME和RFC 2046(特別是Mixed subtype section)。您必須根據這些RFC格式化電子郵件,並通常使用base64對附件進行編碼。這是一個很大的工作,與gool ol dos命令很痛苦。

最簡單的選擇是使用命令行工具,如BLAT for Windows

0

像@NicolasRiousset指出,如果沒有適當的客戶端,它可能太痛苦了,但是如果文本文件包含格式正確的純文本(僅7位US-ASCII;沒有文本行長於...呃,稍微少於1,000個字符)你可以做類似

#!/bin/bash 
case $# in 2) ;; *) echo "Usage: $0 <host> <filename.txt>"; exit 0;; esac 
(printf $'%\r\n' "helo mydomain.com" \ 
    "mail from:<[email protected]>" \ 
    "rcpt to:<[email protected]>" 
    "data" 
    "Subject: $2" 
    "" 
    sed $'s/^\./../;s/$/\r/' "$2" 
    printf $'%\r\n' "." "quit" 
) | 
telnet "$1" 25 

可能存在計時問題; nc可能比普通老telnet更好。一個適當的工具將等待每個命令後的SMTP服務器響應,並檢查其返回碼。

我使用Bash C風格的字符串(某種)可移植性,但(例如)您的sed可能仍然不能很好地播放。除了用CRLF:s替換換行符之外,該腳本還會按照RFC5321的要求執行點填充。

另請注意,您的mail from:rcpt to:命令稍有不正確。

相關問題