Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

使用 PHP 發送文本消息

by
Difficulty:BeginnerLength:LongLanguages:

Chinese (Traditional) (中文(繁體)) translation by Fuhuan (you can also view the original English article)

全世界,越來越多的網絡應用程序集成了 SMS,直接通過移動設備通知用戶事件,促銷活動或優惠券。

在本教程中,我們將介紹使用 PHP 發送文本消息的基礎知識。


簡介

發送短消息(SMS)消息實際上非常簡單。

下面是如何將消息從 Web 應用程序發送到無線設備的簡化圖。

我們將打破這個 - 壹次壹件:

  • 該消息使用在 HTTP 服務器上存儲和執行的 Web 應用程序組成,然後通過因特網(“雲”)作為電子郵件消息發送。
  • 電子郵件由短消息服務網關(SMS 網關)接收,該網關將消息從電子郵件消息轉換為 SMS 消息。
  • 然後將 SMS 消息傳遞給短消息服務中心(SMSC),SMSC 是將數據路由到特定移動設備的服務器。
  • 該消息最終通過無線網絡傳輸給接收者。

大多數無線網絡都有壹個 SMS 網關,通過該網關可以將電子郵件消息作為文本消息發送到移動設備。  這很好,因為從開發人員的角度來看,它通常是免費的 - 但是,它當然不是終端用戶的免費服務。 費用仍然適用於郵件的收件人,通過電子郵件發送的郵件將被收取為非網絡短消息。


電郵至短消息

要通過電子郵件發送短消息,通常只需要兩件事:

  • 妳要訪問的移動設備的電話號碼或唯壹標識符。
  • 無線網絡的域名(許多可以在這個電子郵件列表中找到 SMS 地址)

大多數運營商可遵循以下慣例:

phoneNumber 是發送消息的移動設備的電話號碼,domainName.com 是網絡 SMS 網關的地址。

要向 Example 先生發送文本,妳只需將 3855550168@vtext.com 添加到任何電子郵件客戶端,輸入消息並點擊發送即可。 這將向 Verizon 無線網絡上的電話號碼 + 1(385)555-0168 發送短消息。

例如,我會使用 Gmail 向自己發送短消息。

當我的手機收到消息時,它應該是這樣的:

真棒!


PHP 的郵件功能

讓我們更進壹步。 使用 SMS 網關,我們可以使用 PHP 的郵件功能通過電子郵件發送短消息。 該郵件功能具有以下特征:

妳可以在這裏閱讀更多相關信息。

  • $ 來定義消息的接收者。  有效的例子包括:

    • user@example.com
    • user1 @ example.com,user2 @ example.com
    • 用戶 
    • User2 User2
  • $ subject 是相當自我解釋的; 它應該是包含所需主題的字符串。 但是,SMS 不需要主題。
  • $ message 是要傳遞的消息。 如 PHP 手冊中所述, 每行應使用 LF(\ n)分隔。 行不應超過 70 個字符。“

要復制早期的功能,我們可以編寫以下 PHP 代碼:


測試

讓我們用 PHP 運行測試,以確保壹切正確,並且郵件功能實際上將發送文本消息。 使用以下代碼,我們可以運行:

當我的手機收到消息時,它看起來像這樣:

如果收到錯誤,請參閱故障排除部分。

正如妳在上圖中看到的那樣,該消息顯示它來自 Gmail。  這是因為我通過該服務從本地服務器路由所有傳出消息。 不過,在撰寫本文時,我沒有成功改變 From 標頭以反映備用地址。  似乎電子郵件標題被剝離並替換為 SMS 網關準備的標頭。  如果有人知道怎麽解決,能把方法說出來嗎?


增加可用性

標記

有了基礎知識,讓我們采用這個想法並圍繞它設計壹個用戶界面。 首先,我們將設置壹個簡單的表單:

樣式

接下來我們將介紹壹些 CSS:

這給了我們以下簡單的形式:


劇本

最重要的部分是 PHP 腳本。  我們現在寫下這段代碼:

  • 該腳本首先檢查表單是否已提交。
  • 如果是,則檢查是否發送了 phoneNumber,carrier 和 smsMessage 變量。  這在頁面上可能有多個表單的情況下很有用。
  • 如果 phoneNumber,carrier 和 smsMessage 可用且 phoneNumber 和 carrier 不為空,則可以嘗試發送消息。
  • mail 函數中的 message 參數每行應為 70 個字符。 我們可以使用 wordwrap 函數將消息分成 70 個字符的塊。
  • phoneNumber 和 carrier 連接在壹起,然後使用 mail 功能發送消息。
  • 如果數據丟失或無法驗證,則腳本只返回並非所有信息都已提交。
  • 最後,mail 返回壹個布爾值,指示它是否成功。 如果我需要驗證消息實際上已發送,則該值存儲在 $ result 中。

註:該郵件方法只通知消息是否發送或沒有。 它不提供檢查郵件是否已由收件人服務器或郵箱成功接收的方法。


最終守則


故障排除

Localhost 錯誤

要使用郵件功能,妳必須運行郵件服務器。 如果妳在網絡主機上運行它,妳可能還可以。 但如果妳不確定,我建議妳與管理員聯系。 這也適用於個人機器。  所以如果妳得到像... 那樣的錯誤

... 妳必須安裝和配置郵件服務器。  這超出了本教程的範圍。 但是,如果妳正在使用本地計算機,切換到 XAMPP 之類的東西可能會解決此問題。 或者,嘗試在 WAMP,MAMP 或 LAMP(或 SAMP 或 OAMP 等)系統(這是很多'AMP')上安裝 Mercury Mail。

PHPMailer

另壹個選項(我喜歡的方法)是使用 PHPMailer。 下面是如何使用 PHPMailer 連接到 Gmail 的 SMTP 服務器並發送消息的示例。

使用它就像在腳本中包含壹個類壹樣簡單。

這應該打印出以下內容:

根據妳的具體情況,可能需要更多時間來設置連接。 如果妳打算使用 Gmail,Google 會提供有關連接的信息。


結論

有許多方法可以完成通過 Web 應用程序發送 SMS 的任務。 這種方法實際上適用於低容量的消息傳遞(每月最多可能少於 1,000 條短消息)和開發人員希望在不花錢的情況下發送。 其他選擇包括:

  • 使用 SMS 網關提供程序

    • 大多數 SMS 網關提供商都包含用於通過 Web 應用程序發送消息的 API。
    • 大多數 SMS 網關提供商都包含用於通過 Web 應用程序發送消息的 API。
    • 假設妳計劃每月發送至少 1,000 條短消息,通常可以以合理的價格註冊服務。
    • 妳可以租壹個簡短的密碼。
  • 使用 GSM 調制解調器

    • 這可能是壹種貴且慢的方式,因為妳得購買調制解調器並與無線網絡簽訂合同
    • 妳還必須使用 AT(Hayes)命令集。
  • 使用直接連接到無線網絡,這需要很多錢。

本教程絕不是對使用 PHP 發送 短消息的全面回顧; 但它應該能給妳開始的幫助! 我希望妳對這個教程感興趣。 非常感謝妳的閱讀!

Envato qr branded
关注我们的公众号
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.