2015-09-22 87 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:命令稍有不正确。

相关问题