全部產品
Search
文件中心

:使用 SMTP 發送郵件

更新時間:Jul 13, 2024

開啟 SMTP 發信功能

您需要先開啟 SMTP 發信功能才能通過 SMTP 介面發送郵件。

  1. 登入 Direct Mail控制台

  2. 單擊左側導覽列中 發信地址,進入發信地址頁面。

  3. 在發信地址清單中,找到您要開啟 SMTP 發信功能的發信地址,在對應的操作欄中單擊 設定 SMTP 密碼

  4. 在彈出對話方塊中填寫 SMTP 密碼,然後單擊 確定

SMTP 發信方法

SMTP 協議是一個簡單的郵件傳輸協議,利用它您可以將郵件發送給別人。此協議使用命令和應答在用戶端與伺服器之間傳輸報文。即用戶端發出一個命令,伺服器返回一個應答。發送方與接收方進行一問一答的互動,由發送方控制這個對話。

目前最新的 SMTP RFC 協議是 RFC5321

使用 SMTP 協議的郵件伺服器分為兩種:

  • 一種為郵件發送伺服器,通常叫做 smtpd,需要寄件者進行認證。

  • 一種為郵件接收伺服器,通常叫做 mx,接收外部電訊廠商使用者投遞給本機使用者的郵件。

阿里雲Direct Mail的郵件伺服器為 smtpd,所以需要進行使用者認證(要求認證使用者名稱和寄件者必須一致),認證使用者名稱(就是寄件者)和密碼可以通過控制台進行設定。

程式中調用 SMTP 發送郵件可以使用各種語言的 SMTP Library。詳細參考,請見 SMTP 調用樣本

通過 SMTP 協議發送郵件的整體過程如下:

  1. 用戶端使用 telnet 命令串連到SMTP伺服器,建立會話。

  2. 用戶端發送一個 HELO 或 EHLO 命令。

  3. 用戶端發送一個 AUTH 認證命令進行使用者登入(使用 smtpd 方式)。

  4. 用戶端發送一個 MAIL 命令指定寄件者。

  5. 用戶端發送一個 RCPT 命令指定收件者。

  6. 用戶端發送一個 DATA 命令準備輸入郵件內文。

  7. 用戶端發送一個 . 命令(點命令)表示 DATA 命令結束。

  8. 用戶端發送一個 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 方式發送帶附件的郵件?