1、一般格式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | telnet smtp.126.com 25 helo justtest auth login bGl1amluMjIyODMxOUAxMj*** bGowMjAyLC4*** mail from:<liuj****319@126.com> rcpt to:<710****39@qq.com> data to:ds from:me subject:test this is a test . quit |
telnet smtp.126.com 25 是連接郵件服務器,返回如下信息:
helo justtest 是郵件用戶名,這里我也不懂,隨便輸入,返回如下信息:
auth login 是用普通方式登錄,返回如下信息:
bGl1amluMjIyODMxOUAxMj*** 這里是輸入真正登錄郵箱的用戶名的base64編碼(網上百度base64編碼),我這里用“*”隱藏我的用戶名base64編碼的一些字符串,免得被破解,下面的“*”也是這個意思,返回信息如下:
bGowMjAyLC4*** 這里是密碼,也是要輸入密碼的base64編碼,返回信息如下:
mail from:<liuj****319@126.com>
rcpt to:<710****39@qq.com>
這上面兩個應該懂吧?郵件來自哪,發往哪?
data 以下開始時數據內容
to:ds 發往哪,隨便填
from:me 從哪來,隨便填
subject:test 郵件主題
注意這里有空一行,注意啦,注意啦。也不要在這空行中打空格。
this is a test 這回郵件正文。
. 單獨的、行首的、獨占一行的、英文符的點,表示data的結束,開始發送郵件。
quit 退出。
看看
mail from:<liuj****319@126.com>跟from:me
rcpt to:<710****39@qq.com>跟to:ds的區別吧,一張圖看懂:
上面各輸入的返回如下:
這就是發送郵件的一般格式了。那怎么送批處理做了?
2、批處理發送郵件
你會發現,將上面的命令寫入.bat的文件,再運行,它會停在telnet smtp.126.com 25這里,等這個連接自動超時斷開后才繼續執行下面的命令,這怎么可以了?下面的那些命令式在telnet 進入郵件服務器后必須立刻執行的命令,而不是在dos環境下執行的!!!
我是這么處理的
(1)用nc來代替telent
(2)用.bat生成一般格式中除telnet smtp.126.com 25的其他所有命令和郵件內容
詳細過程如:
下寫echo_smtp.bat,內容如下:
1234567891011121314151617@echo off
echo helo justtest>> smtp.txt
echo auth login>> smtp.txt
echo bGl1amluMjIyODMxOUAxMj***>> smtp.txt
echo bGowMjAyLC4****>> smtp.txt
echo mail from:^<liujin2****19@126.com^>>> smtp.txt
echo rcpt to:^<71****39@qq.com^>>> smtp.txt
echo data>> smtp.txt
echo to:*****039@qq.com>> smtp.txt
echo from:l****28319@126.com>> smtp.txt
echo subject:test>> smtp.txt
echo.>> smtp.txt
echo
this
is a test>> smtp.txt
type WGET.LOG>> smtp.txt
echo.>>smtp.txt
echo .>> smtp.txt
echo quit>> smtp.txt
這里就是生成一般格式中除telnet smtp.126.com 25的其他所有命令和郵件內容,
type是我要寫的正文,把某某日志文件寫到正文里
^是轉義字符
echo.是寫一空行
寫send_email.bat,內容如下:
1if
exist smtp.txt nc -vv smtp.
126
.com
25
< smtp.txt
這里是nc連接smto.126.com 的25端口,并在連接后執行smtp.txt里的內容。
寫smtp.bat,內容如下:
1echo_smtp.bat & send_email.bat
這里就是執行上面的echo_smtp.bat和send_email.bat,不要將這兩個命令寫在兩行。
運行smtp.bat就可以發送郵件了,必須成功!!