日期:2009-11-15  浏览次数:20520 次

    我在网络上找到一个用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文档,可以实现接收短信、手机设置等功能