Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prikladnoe7.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
37.5 Кб
Скачать

Мочоный В. О КИ-132

Лабораторная работа № 7 работа в java с почтовыми сервисами

7.1 Цель работы: Изучить пакет JavaMail, позволяющий создавать почтовые приложения и осуществлять обработку электронной почты.

7.2 Краткие теоретические сведения

Java Mail – набор классов, которые обеспечивают платформенно и протокольно независимый доступ к сервисам электронной почты и позволяют создавать полнофункциональные почтовые приложения.

JavaMail разработан для облегчения возможности обработки электронной почты простыми приложениями. Пакет включает классы, которые реализуют общие почтовые функции и протоколы.

JavaMail API поддерживает различные реализации почтовых систем с различными форматами сообщений, с использованием различных транспортных протоколов. Обеспечивает набор базовых классов и интерфейсов, которые определяют API для приложений-клиентов. Многим простым приложениям необходимо только взаимодействовать с системой передачи сообщений через эти базовые классы и интерфейсы. Пакет JavaMail входит в состав J2EE.

Архитектура приложения, использующего JavaMail

Архитектуру приложения, которое использует JavaMail можно представить следующим образом:

- Абстрактный уровень – определяет классы, интерфейсы и абстрактные методы, предназначенные для поддержки основных функций по управлению почтой;

- Уровень интернет реализации – реализует часть абстрактного уровня с использованием стандартов RFC822(формат сообщений интернет) и MIME(формат представления почтовых сообщений).

Такая архитектура позволяет использовать одни и те же JavaMail API вызовы для посылки, приема и сохранения различных сообщений, используя различные типа данных для различных хранилищ писем и использования различных транспортных протоколов.

7.3. Класс data

public class DATA { public static String username="",password="",smtpServer="",fromMail=""; public static File file=null; public static Session session=null; public static Transport transport=null; }

7.4. Класс SendMail

public class SendMail extends AsyncTask<Void,Void,Void> { private Context context; private ProgressDialog progressDialog; private String email,subject,message; File file; boolean isOk=true; public void setFile(File file){ this.file=file; } public SendMail(Context context, String email, String subject, String message){ this.context = context; this.email = email; this.subject = subject; this.message = message; } @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = ProgressDialog.show(context,"Отправка сообщения","Подождите...",false,false); } @Override protected void onPostExecute(Void v) { super.onPostExecute(v); progressDialog.dismiss(); if(isOk)Toast.makeText(context,"Письмо отправлено",Toast.LENGTH_LONG).show(); else Toast.makeText(context,"Ошибка отправки сообщения!",Toast.LENGTH_LONG).show(); } @Override protected Void doInBackground(Void... params) { try { MimeMessage mm = new MimeMessage(DATA.session); mm.setFrom(new InternetAddress(DATA.fromMail)); mm.addRecipient(Message.RecipientType.TO, new InternetAddress(email)); mm.setSubject(subject); // Создаем первое приложение письма и заполняем его содержимое MimeBodyPart mbp1 = new MimeBodyPart(); mbp1.setText(message); // создаем вторую часть письма MimeBodyPart mbp2 = new MimeBodyPart(); Multipart mp = new MimeMultipart(); mp.addBodyPart(mbp1); // прикрепляем файл к письму if (file!=null) { FileDataSource fds = new FileDataSource(file); mbp2.setDataHandler(new DataHandler(fds)); mbp2.setFileName(fds.getName()); mp.addBodyPart(mbp2); } mm.setContent(mp); mm.setSentDate(new Date()); mm.saveChanges(); if(DATA.transport!=null) { DATA.transport.sendMessage(mm, mm.getAllRecipients()); } } catch (MessagingException e) { isOk=false; Log.e("ERROR","ERROR!"); e.printStackTrace(); return null; } return null; } }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]