開啟 SMTP 發信功能
您需要先開啟 SMTP 發信功能才能通過 SMTP 介面發送郵件。
登入 Direct Mail控制台。
單擊左側導覽列中 發信地址,進入發信地址頁面。
在發信地址清單中,找到您要開啟 SMTP 發信功能的發信地址,在對應的操作欄中單擊 設定 SMTP 密碼。
在彈出對話方塊中填寫 SMTP 密碼,然後單擊 確定。
SMTP 發信方法
SMTP 協議是一個簡單的郵件傳輸協議,利用它您可以將郵件發送給別人。此協議使用命令和應答在用戶端與伺服器之間傳輸報文。即用戶端發出一個命令,伺服器返回一個應答。發送方與接收方進行一問一答的互動,由發送方控制這個對話。
目前最新的 SMTP RFC 協議是 RFC5321。
使用 SMTP 協議的郵件伺服器分為兩種:
一種為郵件發送伺服器,通常叫做 smtpd,需要寄件者進行認證。
一種為郵件接收伺服器,通常叫做 mx,接收外部電訊廠商使用者投遞給本機使用者的郵件。
阿里雲Direct Mail的郵件伺服器為 smtpd,所以需要進行使用者認證(要求認證使用者名稱和寄件者必須一致),認證使用者名稱(就是寄件者)和密碼可以通過控制台進行設定。
程式中調用 SMTP 發送郵件可以使用各種語言的 SMTP Library。詳細參考,請見 SMTP 調用樣本。
通過 SMTP 協議發送郵件的整體過程如下:
用戶端使用 telnet 命令串連到SMTP伺服器,建立會話。
用戶端發送一個 HELO 或 EHLO 命令。
用戶端發送一個 AUTH 認證命令進行使用者登入(使用 smtpd 方式)。
用戶端發送一個 MAIL 命令指定寄件者。
用戶端發送一個 RCPT 命令指定收件者。
用戶端發送一個 DATA 命令準備輸入郵件內文。
用戶端發送一個 . 命令(點命令)表示 DATA 命令結束。
用戶端發送一個 QUIT 命令結束會話。
樣本
為協助您熟悉使用 SMTP 協議發送郵件的流程,提供以下 telnet 命令會話過程樣本,來描述 SMTP 命令會話過程。
備忘:其中 S 代表格服務器,C 代表用戶端。可以使用 Linux 命令 echo -n Content|base64 進行 base64 編碼。
$telnet smtpdm.aliyun.com 25
S:220 smtp.aliyun-inc.com MX AliMail Server(127.0.0.1)
C:EHLO test.com
S:250-smtp.aliyun-inc.com
S:250-8BITMIME
S:250-AUTH=PLAIN LOGIN XALIOAUTH
S:250-AUTH PLAIN LOGIN XALIOAUTH
S:250-PIPELINING
S:250 DSN
C:AUTH LOGIN
S:334 dXNlcm5hbWU6
C:dGVzdEB0ZXN0LmNvbQ== 備忘:使用者名稱test@test.com的base64編碼
S:334 UGFzc3dvcmQ6
C:dGVzdA== 備忘:使用者密碼test的base64編碼
S:235 Authentication successful
C:MAIL FROM: <test@test.com> 備忘:注意用 <> 將寄件者擴起來
S:250 Mail Ok
C:RCPT TO: <test@test.com>
S:250 Rcpt Ok
C:DATA
S:354 End data with <CR><LF>.<CR><LF>
C:subject: test
C:from: <test@test.com>
C:to: <test@test.com>
C:
C:test
C:.
S:Data Ok: queued as freedom ###envid=148316944
C:QUIT
S:221 Bye
其中,DATA 命令後輸入的郵件內文樣本中,採用了最簡單的文本字串資料。對於標準的富文本郵件,應該進行規範的 MIME 格式化,包括主題、本文的編碼等,這樣可以降低被接收方伺服器判為垃圾郵件的風險。
MIME 協議可參考 RFC2045。可以使用阿里雲官網提供的 SMTP 發送樣本中的各種語言 Library 進行 MIME 郵件編碼。
如何構建 MIME 郵件,請參見 如何通過 SMTP 方式發送帶附件的郵件?