如何從桌面應用程式(使用 C++ 編寫)傳送簡訊。
下載原始碼 - 45.7 KB
簡介
本文介紹瞭如何為桌面應用程式添加發送文字(SMS)訊息的功能。
背景
本文重點介紹使用 MFC / C++ 的實現。在尋找一種可靠且經濟的方式來以程式設計方式傳送簡訊時,我遇到了一家名為 CardBoardFish 的公司,該公司覆蓋 150 個國家/地區,並提供易於使用但功能強大的 SDK,可用於與任何網站、手機或桌面應用程式進行介面,涵蓋大多數平臺和開發環境。不幸的是,在其網站的程式碼示例中,沒有 C++ 示例,因此我決定開發我自己的 C++ 實現。
以程式設計方式傳送簡訊
大多數應用程式和網站在傳送簡訊時,都會將其作為其範圍的一部分或作為其他功能之一(例如,傳送警報等),它們通常使用以下方法之一:
本文重點介紹第一種方法,即使用 Web 服務。
- HTTP Web 服務 - 要求使用 HTTP“GET”方法,透過 API 向給定的 Web 服務傳送命令,該 API 包含憑據、引數和訊息文字。
- 電子郵件到簡訊 - 使用 SMTP 協議,允許以一種獨特的格式傳送電子郵件,該格式將所有必需的引數(憑據、發件人、接收者等)編碼為電子郵件的一部分。
API
下表列出了可以(或應該)傳送到 Web 服務的所有引數。
![]()
使用程式碼
本文中的程式碼是在 MFC / C++ 中使用 Visual Studio 2010 Ultimate 開發的。我還使用了 Cheng Shi 的 HTTPClient(感謝 Cheng!)。
為了在您自己的應用程式中使用程式碼,建議您閱讀名為 HTTPSMS 的 SDK 的規範。其次,您需要開立一個賬戶並獲取您的使用者名稱和密碼,這些資訊可以硬編碼在原始碼中,也可以在執行時輸入。SendSMS 應用程式
![]()
我們應用程式的主要功能顯然是傳送簡訊,這在以下函式中完成:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30// SendSms - by Michael Haephrati BOOL SendSms(CString From, CString CountryCode, CString To,CString Message,CString *Status) // From - the ID or number you are sending from. This is what will appear at the recipient's cellphone. // CountyCode - the code of the country you are sending the SMS to (for example: 44 is for the UK // To - is the number you are texting to, which should not contain any leading zeros, spaces, commas, etc. // Message - is the message you are sending, which can be any multi lingual text // The status returned would be either a confirmation number along with the text "OK", which means that the message // was delivered, or an error code. { BOOL result=FALSE; wstring user=L"PLACE_YOUR_USERNAME_HERE",pass=L"PLACE_YOUR_PASSWORD_HERE",request=L""; // request=L"http://sms1.cardboardfish.com:9001/HTTPSMS?S=H&UN="; request+=user; // user name request+=L"&P="; request+=pass; // password request+=L"&DA="; request+=(wstring)(CountryCode+To); // country code request+=L"&SA="; request+=(wstring)From; // From (sender ID) request+=L"&M="; CString EncodedMessage; // Message CString ccc; EncodedMessage=ConvertHex(Message)+ConvertHex( L" here you can place your marketing piech, website, etc."); request+=(wstring)EncodedMessage; // Message to send request+=L"&DC=4"; // Indicating that this message is encoded as opposed to plain text
現在我們處理 HTTP“GET”請求。
1
2
3
4
5
6
7
8
9
10WinHttpClient client(request); client.SendHttpRequest(L"GET",true); // Get the response wstring httpResponseHeader = client.GetResponseHeader(); wstring httpResponseContent = client.GetResponseContent(); *Status=httpResponseContent.c_str(); return result; }
其他服務
我測試了 CardBoardFish 的服務,並在附加原始碼中使用了它們。它們在此處提供了自己的程式碼示例,但其中不包含 c++,這就是我編寫本文附加的測試應用程式的原因。
我找到了另一個備選服務提供商:http://www.clickatell.coml,因此有多種選擇可供選擇。
我最近測試了他們提供的另一項服務,即在傳送簡訊之前驗證手機號碼。我沒有包含此功能,因為我發現它太慢了,而且它也不涵蓋某些國家/地區,其中包括……美國。
延伸閱讀
請參閱我的另一篇文章,本文將解釋如何使用 iOS(iPhone / iPad)完成同樣的操作。
許可證
本文以及任何相關的原始碼和檔案,均根據 The Code Project Open License (CPOL) 獲得許可。
關於作者
Michael N. Haephrati 是一位企業家、發明家和音樂家。Haephrati 曾參與過許多專案,包括 HarmonySoft,設計了 Rashumon,這是 Amiga 計算機上首個圖形多語言文字處理器。在 1995-1996 年間,他作為合同工在 Apple 位於庫比蒂諾的公司工作。在一家研究所工作,為以色列的信用評分領域邁出了第一步。他創立了 Target Scoring,並開發了一個名為 ThiS 的信用評分系統,該系統基於地理統計資料,參與了 VISA CAL、Isracard、Bank Leumi 和 Bank Discount(Target Scoring,是一家大型以色列機構的業務發展副總裁)。
2000 年,他創立了 Target Eye,並開發了第一個名為 Target Eye 的遠端 PC 監控系統。
其他專案包括:資料清洗(作為 DataTune 系統的一部分,該系統已在許多組織中實施)。
關注 @haephrati
關注 Twitter、Google、LinkedIn。
文章頂部