给本地用户发送邮件
该部分中演示的是使用mail命令给同一个系统中的其他用户发送邮件。
#!/bin/bash echo "A Test Mail." | mail -s "Test Mail" zheng # 当前登录的用户为root,所以发邮件的用户为root。命令中的zheng为系统中的另外一个用户。 # 上述命令发送一封主题为“Test Mail”且邮件内容为“A Test Mail.”的邮件给用户zheng。 # 用户zheng登录后,在终端中执行mail命令,即可查看邮箱中的邮件。 # 系统中所有的邮件位于/var/mial/$USER。注意,如果用户从未收到过邮件,那么在/var/mail中可能没有对应的文件。
使用telnet命令发送邮件
该部分中演示的是使用telnet命令,登录163邮箱服务器,给QQ邮箱发送邮件。
几点说明
- 在下面的示例中,需要用户输入的内容进行了加粗显示。
- 以「# 说明:」之类的文本为解释性内容,使用斜体显示。
- <ENTER>表示回车键。
- 示例中发件人的邮箱地址:sender@163.com
- 示例中收件人的地址为:recipient@qq.com
- 最重要的一点:以下命令的有些地方连一个空格都不能多。类似的地方会着重说明。
操作步骤如下
telnet smtp.163.com 25<ENTER> # 说明:SHELL命令。连接的163邮箱服务器及端口号。 Trying 220.181.12.11... Connected to smtp.163.com. Escape character is '^]'. 220 163.com Anti-spam GT for Coremail System (163com[20141201]) # 说明:表示连接成功。如果再按<ENTER>键,则直接退出。 helo localhost<ENTER> # 说明:发送HELLO命令,开始会话。 250 OK auth login<ENTER> # 说明:请求认证登录命令。 334 dXNlcm5hbWU6 # 说明:“username:”的Base64值,提示你输入用户名。 ZG9uZ2hhbmhhbmdAMTYzLmNvbQ==<ENTER> # 将你的用户名base64编码后填入 334 UGFzc3dvcmQ6 # 说明:"Password:"的Base64值,提示你输入密码。这个密码是授权码(登录邮箱客户端使用的那个),不是在网页登录邮箱使用的那个密码。 bGl1a2FpMTM4LC4=<ENTER> 235 Authentication successful # 说明:登录成功。下面就是发送邮件了。 mail from:<sender@163.com><ENTER> # 说明:邮件发送者。发件人邮箱地址两侧的<和>不能省略。 250 Mail OK rcpt to:<recipient@qq.com><ENTER> # 说明:邮件接收者。收件人邮箱地址两侧的<和>不能省略。 250 Mail OK data<ENTER> # 说明:data命令开始书写邮件内容。 354 End data with <CR><LF>.<CR><LF> to:recipient@qq.com<ENTER> # 说明:收件人邮箱跟上文保持一致。to:与recipient@qq.com之间不要有什么空格。不然会被退信。 from:sender@163.com<ENTER> # 说明:发件人邮箱跟上文保持一致。from:与sender@163.com之间不要有什么空格。否则可能会被退回。 subject:test mail<ENTER> # 说明:邮件主题。 <ENTER> # 说明:添加一个空行,分割协议头与邮件正文,如果不加入改行,会导致邮件被退回。 This is a test mail....<ENTER> # 说明:正文内容 .<ENTER> # 说明:正如上面的提示:354 End data with <CR><LF>.<CR><LF>,表示邮件结束。 250 Mail OK queued as smtp12,EMCowABnovABxQ1XZjKTAQ--.7259S2 1460520311 quit<ENTER> # 说明:退出 221 Bye Connection closed by foreign host.
现在可以到收件人的邮箱中,查看是否收到了主题为test mail的邮件了。
问题解答
若是最后阶段出现如下信息:
554 DT:SPM 163 smtp8,DMCowAD3tGW3xQ1XTZwWAA--.342S2 1460520473,please see http://mail.163.com/help/help_spam_16.htm?ip=183.62.251.42&hostid=smtp8&time=1460520473
表示我们被退信了。可以到提示的URL查看邮件退回原因。
使用mail命令发送邮件
参考另篇文章 在GNU/Linux中,使用 mail 命令发送邮件,因为这里面涉及很多东西要介绍。
参考文献
Linux终端telnet连接xxx邮箱server通过命令行实现mail发送
How to Test SMTP AUTH using Telnet