我想使用telnet服務發送郵件正文中的日誌文件的內容。我一直在使用命令行下面的命令來觸發郵件:使用telnet發送郵件時添加文件的內容
telnet mydomain.com 25
helo mydomain.com
mail from:senderdomain.com
rcpt to:recieverdomain.com
data
Hi.. This is for test!
.
quit
如何添加一個主題,在此郵件的文本文件的內容?請幫忙!
我想使用telnet服務發送郵件正文中的日誌文件的內容。我一直在使用命令行下面的命令來觸發郵件:使用telnet發送郵件時添加文件的內容
telnet mydomain.com 25
helo mydomain.com
mail from:senderdomain.com
rcpt to:recieverdomain.com
data
Hi.. This is for test!
.
quit
如何添加一個主題,在此郵件的文本文件的內容?請幫忙!
您將無法使用普通的telnet會話輕鬆完成此操作。
如果您需要發送郵件附件,您需要遵循RFC 2045, MIME和RFC 2046(特別是Mixed subtype section)。您必須根據這些RFC格式化電子郵件,並通常使用base64對附件進行編碼。這是一個很大的工作,與gool ol dos命令很痛苦。
最簡單的選擇是使用命令行工具,如BLAT for Windows。
像@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:
命令稍有不正確。