Here is code that allows you to send sms message:
Code:
using System;
using System.Text;
using System.Runtime.InteropServices;

namespace myWireless 
{

#if ( !WCE && !PPC && !SP)
#error	"Wireless functions are only for the PPC and SMARTPHONE"
#endif
	
	/// <summary>
	/// Short Message Service.
	/// </summary>
	public class SMS 
	{
		private static string	SMS_MSGTYPE_TEXT				= "Microsoft Text SMS Protocol";
		private static long		SMS_MODE_SEND					= 0x00000002;
		private static long		SMS_OPTION_DELIVERY_NONE		= 0x00000000;
		//private static long		SMS_OPTION_DELIVERY_NO_RETRY	= 0x00000001;
		//private static long		PS_MESSAGE_OPTION_NONE          = 0x00000000;

		private enum SMS_DATA_ENCODING 
		{
			SMSDE_OPTIMAL=0,
			SMSDE_GSM,
			SMSDE_UCS2,
		}

		private enum PROVIDER_SPECIFIC_MESSAGE_CLASS 
		{
			PS_MESSAGE_CLASS0 = 0,
			PS_MESSAGE_CLASS1,
			PS_MESSAGE_CLASS2,
			PS_MESSAGE_CLASS3,
		}

		private enum PROVIDER_SPECIFIC_REPLACE_OPTION 
		{
			PSRO_NONE = 0,
			PSRO_REPLACE_TYPE1,
			PSRO_REPLACE_TYPE2,
			PSRO_REPLACE_TYPE3,
			PSRO_REPLACE_TYPE4,
			PSRO_REPLACE_TYPE5,
			PSRO_REPLACE_TYPE6,
			PSRO_REPLACE_TYPE7,
			PSRO_RETURN_CALL,
			PSRO_DEPERSONALIZATION,
		}

		/*
		private struct TEXT_PROVIDER_SPECIFIC_DATA 
		{
			public IntPtr dwMessageOptions;
			public PROVIDER_SPECIFIC_MESSAGE_CLASS psMessageClass;
			public PROVIDER_SPECIFIC_REPLACE_OPTION psReplaceOption;
		}
		*/

		[DllImport("sms.dll")]
		private static extern IntPtr SmsOpen(String ptsMessageProtocol, IntPtr dwMessageModes, ref IntPtr psmshHandle, IntPtr phMessageAvailableEvent);

		[DllImport("sms.dll")]
		private static extern IntPtr SmsSendMessage(IntPtr smshHandle, IntPtr psmsaSMSCAddress, IntPtr psmsaDestinationAddress, IntPtr pstValidityPeriod, byte[] pbData, IntPtr dwDataSize, 
			byte[] pbProviderSpecificData, IntPtr dwProviderSpecificDataSize, SMS_DATA_ENCODING smsdeDataEncoding,
			IntPtr dwOptions,  IntPtr psmsmidMessageID);

		[DllImport("sms.dll")]
		private static extern IntPtr SmsClose(IntPtr smshHandle);

		/// <summary>
		/// Sends a SMS message to the phone number specified.
		/// </summary>
		/// <param name="sPhoneNumber">The phone number of the recipent</param>
		/// <param name="sMessage">The message to send.</param>
		unsafe public static void SendMessage(string sPhoneNumber, string sMessage) 
		{
			IntPtr hSms = IntPtr.Zero;

			try 
			{
				IntPtr res = SmsOpen(SMS_MSGTYPE_TEXT, (IntPtr)SMS_MODE_SEND, ref hSms, IntPtr.Zero);
				if (res != IntPtr.Zero)
					throw new Exception("Could not open SMS.");		

				Byte[] bDest = new Byte[516];
				fixed (byte* pAddr = bDest) 
				{
					byte *pCurrent = pAddr;              
					Marshal.WriteInt32((IntPtr)pCurrent, (int)AddressType.Unknown);
					pCurrent +=4;

					foreach (byte b in Encoding.Unicode.GetBytes(sPhoneNumber)) 
					{
						Marshal.WriteByte((IntPtr)pCurrent, b);
						pCurrent++;
					}		
			
					// The data for the TEXT_PROVIDER_SPECIFIC_DATA
					Byte[] ProvData = new Byte[12];

					byte[] bMessage = Encoding.Unicode.GetBytes(sMessage);
					int nMsgSize = bMessage.Length;

					res = SmsSendMessage(hSms, IntPtr.Zero, (IntPtr)pAddr, IntPtr.Zero, bMessage, (IntPtr)nMsgSize,
						ProvData, (IntPtr)ProvData.Length, SMS_DATA_ENCODING.SMSDE_OPTIMAL, (IntPtr)SMS_OPTION_DELIVERY_NONE, IntPtr.Zero);

					if (res != IntPtr.Zero)
						throw new Exception("SMS send failed.");		
				}
			}
			finally 
			{
				if (hSms != IntPtr.Zero)
					SmsClose(hSms);
			}
		}
	}
}