我想使用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:
命令稍有不正确。