使用CMD控制台发送电子邮件

16

嗨,我想通过微软CMD控制台发送邮件。我尝试了很多方法,但没有成功。

我尝试了这篇文章http://jpsoft.com/help/index.htm?sendmail.htm

sendmail "bob@bob.com bcc:joe@joe.com" Test Hello!

错误信息为:

'sendmail' is not recognized as an internal or external command operable program or batch file

这篇文章:http://www.brighthub.com/office/collaboration/articles/21840.aspx#imgn_1

c:\>"c:\program files\microsoft office\office12\outlook.exe" /c ipm.note /m someone@gmail.com /a "c:\logs\logfile.txt"

错误信息为:

the process can not access the file because it is being used by another proccess

但是它没有起作用。我不知道问题在哪里或者是什么问题。

谢谢您的建议。

4个回答

26

场景: 您的域名: mydomain.com 您希望发送到的域名: theirdomain.com

1.确定您要发送邮件的邮件服务器。 打开CMD提示 键入

NSLOOKUP 
 set q=mx 
 theirdomain.com

回复:

Non-authoritative answer: 
theirdomain.com MX preference = 50, mail exchanger = mail.theirdomain.com 
Nslookup_big

编辑 记得输入exit以终止NSLOOKUP。

2. 连接到他们的邮件服务器

SMTP通过25号端口进行通信。现在,我们将尝试使用TELNET连接到他们的邮件服务器"mail.theirdomain.com"

打开CMD提示符

TELNET MAIL.THEIRDOMAIN.COM 25

你应该看到类似于以下的响应:

220 mx.google.com ESMTP 6si6253627yxg.6

请注意,不同的服务器将提供不同的问候语,但你应该会得到一些回复。如果此时没有任何反应,则可能存在两个问题:在你的防火墙上阻止了25号端口,或者他们的服务器没有响应。尝试使用不同的域名,如果可以正常工作,则问题不在你这里。

3.发送电子邮件

现在,使用简单的SMTP命令发送测试邮件。这非常重要,你不能使用退格键,它在屏幕上可以工作,但无法被正确解释。你必须完美地输入这些命令。

ehlo mydomain.com 
mail from:<martin9700@mydomain.com> 
rcpt to:<recipient@theirdomain.com> 
data 
This is a test, please do not respond
. 
quit

那么,所有这些意味着什么呢? EHLO - 向邮件服务器介绍自己。HELO也可以使用,但是EHLO告诉服务器使用扩展命令集(虽然我们没有使用)。

MAIL FROM - 发送电子邮件的人。请确保将其放在大于/小于括号中,因为许多电子邮件服务器将要求此操作(Postini)。

RCPT TO - 发送对象。再次,您需要使用括号。有关如何测试转发邮件的步骤#4,请参见以下内容:

DATA - 告诉SMTP服务器接下来是您电子邮件的正文。请确保在结尾处按“Enter”键。

. - 单独在行上的句点告诉SMTP服务器您已完成数据部分,并且可以发送电子邮件。

quit - 退出TELNET会话。

4. 测试SMTP中继 测试SMTP中继非常容易,只需要对上述命令进行小的更改即可。请参见以下内容:

ehlo mydomain.com 
mail from:<martin9700@mydomain.com> 
rcpt to:<recipient@someotherdomain.com> 
data 
This is a test, please do not respond 
. 
quit

看出区别了吗?在 RCPT TO 行中,我们正在发送到一个不受我们发送邮件的 SMTP 服务器控制的域。如果 SMTP 中继被关闭,您将立即收到错误。如果您能够继续发送电子邮件,则该服务器允许中继。


9

如果你不想直接通过telnet与SMTP服务器交互,你可以使用命令行邮件客户端,如blat

blat -to you@example.com -f me@example.net -s "mail subject" ^
  -server smtp.example.net -body "message text"

或者使用bmail

bmail -s smtp.example.net -t you@example.com -f me@example.net -h ^
  -a "mail subject" -b "message text"

您也可以使用VBScriptPowerShell编写自己的邮件发送程序。


根据我的经验,BLAT更强大但在所有Windows版本上运行起来比较困难。BMAIL则非常好用。 - Marc
bmail可以在这里找到:https://github.com/RussellGrew/bmailv107 - Henrik Høyer

3

在Linux中,你可以使用'swaks'工具,它作为官方包在许多发行版上都可用,包括Debian/Ubuntu和EPEL的Redhat/CentOS:

swaks -f you@example.net -t someone@example.com \
    --server mail.example.com

1
Linux如何帮助他从Windows发送它? - access_granted
2
@access_granted WSL:Windows 子系统 for Linux - ColinM

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接