. Также надо добавить новый пункт меню для очистки текстовых полей. Это позволит пользователю выбрать новый контакт для отправки письма. Надо открыть файл
Form1.cs
в дизайнере формы. На правой стороне меню к уже имеющемуся пункту
Это позволить очистить текстовое поле и в пункте меню
menuSoftKey1
отобразить строку
Контакты
.
Теперь можно писать функцию, отправляющую электронное письмо. В примере сообщение будет отправляться с вложенными файлами. Для примера можно использовать одну из картинок, входящих в состав Windows Mobile 5.0.
Для отправки письма используется класс
EmailMessage
. Чтобы использовать этот класс в нашем примере, надо сначала установить ссылку на пространство имен
System.Messaging
, выполнив команду меню
Project►Add Referenc
e. После этого можно пользоваться данным пространством имен при помощи ключевого слова
using
:
using System.Messaging;
Код метода
SendEmail
, который будет отвечать за отправку письма, приведен в листинге 10.23.
Листинг 10.23
private void SendEmail {
// Создаем экземпляр класса EmailMessage
EmailMessage message = new EmailMessage;
// Тема письма
message.Subject = "Поздравление";
// Текст письма
message.BodyText = "Поздравляю с Днем Варенья!";
// Выбираем адресата
Recipient client = new Recipient(selContact.Email1Address);
message.To.Add(client);
// добавляем в письмо вложенный файл
Attachment image = new Attachment(@"\My Documents\My Pictures\Flower.jpg");
message.Attachments.Add(image);
message.Send("ActiveSync");
txtContact.Text = string.Empty;
menuSoftKey1.Text = "Контакты";
}
Итак, в методе
SendEmail
объявляется и создается экземпляр класса
EmailMessage
. В свойствах
Subject
и
BodyText
задаются тема и текст письма. Электронный адрес из выбранного контакта записывается в свойстве
EmailMessage.То
. Для этого создается экземпляр класса
Recipient
и передается свойство
selContact.Email1Address
.
Теперь можно добавить в письмо вложенный файл. Для этого создается экземпляр класса
Attachment
, которому в конструктор передается
полное имя выбранного файла. После этого свойству
EmailMessage.Attachment
передается значение экземпляра.
Теперь для отправки письма все готово. Следует вызвать метод
message.Send
и очистить текстовое поле. Также надо восстановить в меню строку
Контакты
. Так как для
menuSoftKey1
используются два метода,
SendEmail
и
SelectContact
, то нужно определиться, когда какой метод следует использовать. Для этого нужно получить значение свойства
Настало время проверить нашу программу. После запуска приложения надо выбрать адресата, которому предназначено письмо. Для отображения окна выбора контакта следует нажать кнопку
Soft Key 1
. Можно выбрать любой контакт из имеющегося списка. После этого в текстовом поле появится выбранный контакт. При этом пункт меню обретет название
Послать
.
Затем надо снова нажать кнопку
Soft Key 1
. Кнопка
Soft Key 1
примет первоначальный вид, в меню будет отображаться строка Контакт, а текстовое поле будет очищено. Выходим из программы. Но нам надо убедиться, что письмо было отправлено. Поэтому следует перейти на экран
Сегодня
и нажать кнопку
Пуск
, после чего активировать пиктограмму
Сообщения
. В появившемся списке надо выбрать пункт
Эл.п. Outlook
, а из пункта
Меню
перейти в подменю Папки. Затем осталось перейти в папку
Исходящие
. В ней должно находиться новое сообщение.
Мелочь, а приятно
В блоге blogs.msdn.com/anthonywong/, который ведет Энтони Вонг (Anthony Wong), я нашел несколько интересных заметок, рассказывающих об исправленных ошибках или улучшенных возможностях, которые стали доступны в Windows Mobile 5.0.
Метод Directory.Exists
На устройствах под управлением Windows СЕ 4.X метод
Directory.Exists
по-разному обрабатывал имена путей, которые заканчивались обратным слэшем. В качестве примера можно рассмотреть следующее выражение:
Directory.Exists("\\temp");
Это выражение возвращает значение
True
, если папка
temp
существует. Добавим в предыдущее выражение символ обратной черты.
Directory.Exists("\\temp\\")
Теперь данный метод возвратит
False
, даже если папка существует. На устройствах под управлением Windows Mobile 5.0 платформа .NET Compact Framework исправила это противоречие, и теперь метод
Directory.Exists
возвращает
True
вне зависимости от наличия замыкающего обратного слэша.