我在網絡上找到一個用Oxygen控件發送短信的C#源碼,試著調試了一下,發現確實不錯,使用起來也簡單。但美中不足的是在發送的短信中會自動加上控件公司的信息,注冊後會取消這些信息,但注冊需要一筆不小的費用。
我直接在Nokia的網站上下載了免費的PC Connectivity SDK3.0,調試後發現可以實現同樣的功能。以下程序在Nokia8310用紅外線連接電腦下發送短信成功。
安裝SDK3.0後,在引用中添加COM組件Nokia Setting Adapter for PC suite 3.7和NokiaCL Messaging。
添加引用:
using STTNGS3A_SLib;
using NokiaCLMessaging;
using System.Text;
public void send_sms(string sms_number, string sms_content)?//參數為數據號碼和發送內容
{
try
{
STTNGS3A_SLib.PhoneInfo_Suite3 PhoneStatus = new STTNGS3A_SLib.PhoneInfo_Suite3();
STTNGS3A_SLib.DevNotifyOpt devStatus;
PhoneStatus.get_DeviceStatus(out devStatus);?//判斷手機是否連接到PC上
if (devStatus.ToString() == "ATTACHED")
{
NokiaCLMessaging.ShortMsgAdapter smsObj = new NokiaCLMessaging.ShortMsgAdapterClass();
NokiaCLMessaging.ShortMessageItem smsEntry = new NokiaCLMessaging.ShortMessageItemClass();
smsEntry.Type = NokiaCLMessaging.ShortMessageType.SHORTMESSAGE_TYPE_GSM_SUBMIT;
IGSMSubmit submitObj = (IGSMSubmit)smsEntry.TypePropertIEs;
//轉換編碼
UnicodeEncoding Ustring = new UnicodeEncoding();
byte[] input = Ustring.GetBytes(sms_content.Trim());
sms_content = System.Text.Encoding.Unicode.GetString(input);
submitObj.Message = sms_content;
submitObj.DestinationAddress = sms_number.Trim();
submitObj.ServiceCenterAddress = sms_center.Text.Trim();?//短信中心號碼
submitObj.DataCodingScheme = 8;?//使用Unicode編碼
submitObj.ValidityPeriodRelative = 255;
submitObj.ProtocolID = 0;
smsObj.SendSMS(ShortMessageRouteType.SHORTMESSAGE_ROUTE_TYPE_ANY,submitObj);?//發送短信
MessageBox.Show("短信發送成功!");
}
else
{
MessageBox.Show("沒有找到連接的手機!");
}
}
catch (Exception x)
{
MessageBox.Show("錯誤:" + x.ToString(),"系統提示:");
}
}
SDK3.0支持目前流行的大部分手機,如果是比較老式的手機,請在Nokia網站上下載SDK2.1,支持的部分手機在SDK3.0的另外一個組件Nokia SMS Adapter(PC Suite 3.7),具體哪些型號的手機參見SDK的說明文檔。如果采用數據庫的方式,那麼公司所以的電腦都可以通過一部手機發送短信,也算是一種不錯的通訊選擇。當然,SDK3.0還可以實現其它很多功能,仔細研究SDK文檔,可以實現接收短信、手機設置等功能。