// Кому письмо
msg.To.Add(recipient);
// Тема письма
msg.Subject = 'О вашей книге';
// Текст письма
msg.BodyText = 'Спасибо за книгу';
msg.Send('ActiveSync');
}
SMS-сообщения
Отправка SMS-сообщения с помощью новых возможностей тоже очень и очень проста. Эти сообщения весьма популярны у владельцев мобильных телефонов. Раньше для отсылки и приема SMS
приходилось использовать неуправляемый код, очень сложный для восприятия неопытным программистом. Теперь создать код, отсылающий сообщение, не сложнее, чем написать само сообщение, что иллюстрирует листинг 10.9.
private void butSendSMS_Click(object sender, EventArgs e) {
ChooseContactDialog contactDialog = new ChooseContactDialog();
contactDialog.Title = 'Выберите получателя';
if (contactDialog.ShowDialog() == DialogResult.OK) {
// Создаем SMS-сообщение
SmsMessage message = new SmsMessage(
contactDialog.SelectedContact.MobileTelephoneNumber,
'Купи хлеба. Жена');
message.RequestDeliveryReport = true;
// Посылаем сообщение
message.Send();
}
}
В этом примере SMS-сообщение отсылалось адресату, чья запись уже имелась в адресной книге. Если же требуется отправить сообщение, не используя окно Контакты
, то придется воспользоваться другим кодом.
Здесь я хочу сделать небольшое отступление и открыть вам большой секрет. Разработчик может посылать SMS-сообщения самому себе при помощи эмулятора! Если послать SMS-сообщение из эмулятора на телефонный номер 4250010001, то оно вернется на эмулятор (рис. 10.7).
Итак, необходимо отправить SMS-сообщение человеку, чья учетная запись не отражена в списке Контакты
. Для этого используется код, приведенный в листинге 10.10.
При отладке приложения в эмуляторе надо использовать целевое устройство типа «Phone Edition». Если проверять пример в обычном эмуляторе, то будет отображено сообщение об ошибке «Could not load sms.dll». Впрочем, это не удивительно. Если эмулятор не имеет телефонных функций, то как можно отправлять SMS-сообщение?
private void butSendSMS2_Click(object sender, EventArgs e) {
SmsMessage message = new SmsMessage();
// Номер получателя
message.To.Add(new Recipient('4250010001'));
// Текст сообщения
message.Body = 'Позвони домой';
// Посылаем сообщение
message.Send();
}
Результат выполнения этого кода приведен на рис. 10.7.
Рис. 10.7. Прием SMS-сообщения
Прием и обработка SMS-сообщений
Итак, мы научились отправлять SMS-сообщения из своей программы. Но было бы неплохо научить приложения принимать подобные сообщения. Для приема сообщений существует пространство имен MessageInterception
, которое находится в сборке Microsoft.WindowsMobilе.PocketOutlook
.
Следует заметить: можно организовать прием сообщений таким образом, что запущенное приложение будет перехватывать нужные сообщения, содержащие ключевые слова. Причем система даже не покажет окно, уведомляющее о прибытии перехваченного события.
С этой возможностью стоит познакомиться ближе. После создания нового проекта InterceptionSMS_CS
, нужно добавить на форму кнопку для отсылки SMS-сообщения, флажок chkAlert
для установки флага срочности и текстовое поле, в котором будет содержаться текст SMS-сообщения. Затем надо задать ссылки на уже применявшиеся ранее сборки Microsoft.WindowsMobile
и Microsoft.WindowsMobile.PocketOutlook
. Код, отвечающий за обработку принятых сообщений, приведен в листинге 10.11
using Microsoft.WindowsMobile;
using Microsoft.WindowsMobile.PocketOutlook;
using Microsoft.WindowsMobile.PocketOutlook.MessageInterception;
// Объявляем переменную
private MessageInterceptor smsInterceptor;
private void smsInterceptor_MessageReceived(object sender,
MessageInterceptorEventArgs e) {
// Обработка входящего сообщения
MessageBox.Show('К вам пришло срочное сообщение');
}
private void butSendSMS_Click(object sender, EventArgs e) {
SmsMessage message = new SmsMessage();
// Номер получателя
message.To.Add(new Recipient('4250010001'));
// Текст сообщения