在Windows Mobile 6上通過CEMAPI POOM傳送簡訊
在Winodws Mobile上第三方軟體一般是通過
1)調用SmsMessageSend API函數傳送簡訊。
或者通過
2)CreateProcess或者ShellExecuteEx方式,調用命令(不含角括弧)
</windows/tmail.exe -service "SMS" -to "簡訊接收方號碼" -body "簡訊內容">
下面的例子,就是調用Windows Mobile內建的簡訊程式(tmail.exe),編輯一條收件者為10086,簡訊內容為 CXYE,查詢餘額的簡訊。
/windows/tmail.exe -service "SMS" -to "10086" -body "KTIP1000"
最終效果如。
<Place Holder for SMS Send UI>
1)和2)這兩種方法都有各自的優缺點。
第一種方法,簡訊發送成功後在微軟內建的已發送郵件箱(Sent Items)中找不到已經發送的簡訊。發送失敗也沒有提示。當然可以自己硬行構造POOM的簡訊對象來實現這個不足。
第二種方法,就是通過tmail.exe -service "SMS" -to "" -body "" 的方法不能夠自動傳送簡訊,只是停留在編輯完成介面,還需要使用者手動點擊"發送"按鈕,或者通過程式實現。
下面介紹一種方法既能夠讓已發簡訊出現在已發送郵件箱中,也能夠將簡訊編輯完成後自動發送。
這就是通過CEMAPI來傳送簡訊。這個在www.codeproject.com 上05年的一篇文章已經實現了。請原文請參考 http://www.codeproject.com/KB/mobile/SMS_CEMPI.aspx .
我使用和實踐了這段代碼,發現幾個問題。
1)傳送簡訊不成功後,簡訊會到草稿箱,但是點開改簡訊,再次發送時,就無法發送了。
<Place Holder for Screen shot>
此時,簡訊的內容放置到了主題(Subject)上,這和普通使用時候遇到的情況不一樣,簡訊內容應該在本文(Body)中.
2)簡訊發送時候,需要設定一個參數,那就是本機號碼。至於如何獲得本機號碼,是非常麻煩的。
3)此Sample是在EVC下編譯的,而且缺少.rc2檔案。雖然作者已經說明了如何解決。
但是我還是重新改寫了以下,將所有的CComPtr<IMAPISession> 之類的定義改成了WM6上建議的IMAPISession
改正了 SendSMSMessage 函數的HRESULT 類型傳回值 Return S_OK.
但是1)和2)的問題仍舊需要解決。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/cjwn/archive/2009/02/08/3868466.aspx
利用tmail.exe 命令參數來發送郵件
由於需要最近學習了一下tmail命令參數相關的東西,要實現在程式中發郵件。
先讓我們來看一下tmail.exe 的命令參數吧。
-service -to -cc -bcc -body -subject -attach
一一解釋一下:
-service 選擇mail acount 這裡可以是SMS, MMS, ActiveSync or your E-mail Acount
如何擷取mail acount 在程式中看吧。我懶的寫了。
-to 發送郵件給誰,可以多個郵件地址,用“;”分隔。
-cc Copy to sb,同上。
-bcc Blind copy 同上。
-body 郵件內容。
-subject 郵件主題
-attach 附件,注意,附件要用絕對路徑。
舉個例子吧。
-service /"ActiveSync/" -to /"qqiangsir.163.com/" -body /"E-mail content/" -subject /"test subjet/" -attach /"//My Documents//My Pictures//Heart.gif /
在程式中直接調用tmail.exe 進程就行了。
SHELLEXECUTEINFO si;
ZeroMemory(&si, sizeof(si));
si.cbSize = sizeof(si);
si.fMask = 0;
si.hwnd = NULL;
si.lpVerb = NULL;
si.lpFile = _T("//windows//tmail.exe");
si.nShow = SW_SHOWNORMAL;
CString param;
param.Format(_T("-service /"ActiveSync/" -to /"qqiangsir.163.com/" -body /"E-mail content/" -subject /"test subjet/" -attach /"//My Documents//My Pictures//Heart.gif /"));
si.lpParameters = param;
ShellExecuteEx(&si);