Для отправки письма используется класс EmailMessage. Чтобы использовать этот класс в нашем примере, надо сначала установить ссылку на пространство имен System.Messaging, выполнив команду меню Project►Add Reference. После этого можно пользоваться данным пространством имен при помощи ключевого слова using:
using System.Messaging;
Код метода SendEmail(), который будет отвечать за отправку письма, приведен в листинге 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, то нужно определиться, когда какой метод следует использовать. Для этого нужно получить значение свойства menuSoftKey1.Text, как показано в листинге 10.24.
private void menuSoftKey1Click(object sender, EventArgs e) {
if (menuSoftKey1.Text == "Послать")
SendEmail();
else
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 вне зависимости от наличия замыкающего обратного слэша.