JavaMail

JavaMail

JavaMail — это Java API предназначенное для получения и отправки электронной почты с использованием протоколов SMTP, POP3 и IMAP. JavaMail является частью платформы Java EE, но так же доступен в качестве дополнительного пакета для использования в Java SE приложениях.

На данный момент актуальной версией является JavaMail 1.4.3, релиз которой состоялся 20 ноября 2009 года[1].

Существует так же альтернативная реализация JavaMail с открытым исходным кодом — GNU JavaMail — которая реализует только спецификацию JavaMail версии 1.3, предоставляя возможность работы только протоколом NNTP, что позволяет читать и отсылать статьи в новостных группах.

Содержание

Лицензия

JavaMail доступна под следующими лицензиями:

Примеры использования

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
// Отправка простого сообщения с типом контента "text/plain"
public class TestEmail {
 
    public static void main(String[] args) {
 
        // Сюда необходимо подставить адрес получателя сообщения
        String to = "sendToMailAddress";
        String from = "sendFromMailAddress";
        // Сюда необходимо подставить SMTP сервер, используемый для отправки
        String host = "smtp.yourisp.net";
 
        // Создание свойств, получение сессии
        Properties props = new Properties();
 
        // При использовании статического метода Transport.send()
        // необходимо указать через какой хост будет передано сообщение
        props.put("mail.smtp.host", host);
        // Включение debug-режима
        props.put("mail.debug", "true");
        Session session = Session.getInstance(props);
 
        try {
            // Создание объекта сообщения
            Message msg = new MimeMessage(session);
 
            // Установка атрибутов сообщения
            msg.setFrom(new InternetAddress(from));
            InternetAddress[] address = {new InternetAddress(to)};
            msg.setRecipients(Message.RecipientType.TO, address);
            msg.setSubject("Test E-Mail through Java");
            msg.setSentDate(new Date());
 
            // Установка тела сообщения
            msg.setText("This is a test of sending a " +
                        "plain text e-mail through Java.\n" +
                        "Here is line 2.");
 
            // Отправка сообщения
            Transport.send(msg);
        }
        catch (MessagingException mex) {
            // Печать информации об исключении в случае его возникновения
            mex.printStackTrace();
        }
    }
}

Пример отправки составного сообщения с файловыми вложениями

import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendMailUsage {
 
    public static void main(String[] args) {
 
        // Сюда необходимо подставить адрес получателя сообщения
        String to = "sendToMailAddress";
        String from = "sendFromMailAddress";
        // Сюда необходимо подставить SMTP сервер, используемый для отправки
        String host = "smtpserver.yourisp.net";
 
        // Создание свойств, получение сессии
        Properties props = new Properties();
 
        // При использовании статического метода Transport.send()
        // необходимо указать через какой хост будет передано сообщение
        props.put("mail.smtp.host", host);
        // Включение debug-режима
        props.put("mail.debug", "true");
        //Включение авторизации
        props.put("mail.smtp.auth", "true");
        // Получение сессии
        Session session = Session.getInstance(props);
 
        try {
            // Получение объекта транспорта для передачи электронного сообщения
            Transport bus = session.getTransport("smtp");
 
            // Устанавливаем соединение один раз
            // Метод Transport.send() отсоединяется после каждой отправки            
            //bus.connect();
            // Обычно для SMTP сервера необходимо указать логин и пароль
            bus.connect("smtpserver.yourisp.net", "username", "password");
 
            // Создание объекта сообщения
            Message msg = new MimeMessage(session);
 
            // Установка атрибутов сообщения
            msg.setFrom(new InternetAddress(from));
            InternetAddress[] address = {new InternetAddress(to)};
            msg.setRecipients(Message.RecipientType.TO, address);
            // Парсинг списка адресов разделённых пробелами. Строгий синтаксис
            msg.setRecipients(Message.RecipientType.CC,
                                InternetAddress.parse(to, true));
            // Парсинг списка адресов разделённых пробелами. Более мягкий синтаксис.
            msg.setRecipients(Message.RecipientType.BCC,
                                InternetAddress.parse(to, false));
 
            msg.setSubject("Тест отправки E-Mail с помощью Java");
            msg.setSentDate(new Date());
 
            // Установка контента сообщения и отправка
            setTextContent(msg);
            msg.saveChanges();
            bus.sendMessage(msg, address);
 
            setMultipartContent(msg);
            msg.saveChanges();
            bus.sendMessage(msg, address);
 
            setFileAsAttachment(msg, "C:/WINDOWS/CLOUD.GIF");
            msg.saveChanges();
            bus.sendMessage(msg, address);
 
            setHTMLContent(msg);
            msg.saveChanges();
            bus.sendMessage(msg, address);
 
            bus.close();
 
        }
        catch (MessagingException mex) {
            // Печать информации обо всех возможных возникших исключениях
            mex.printStackTrace();
            // Получение вложенного исключения
            while (mex.getNextException() != null) {
                // Получение следующего исключения в цепочке
                Exception ex = mex.getNextException();
                ex.printStackTrace();
                if (!(ex instanceof MessagingException)) break;
                else mex = (MessagingException)ex;
            }
        }
    }
 
    // Сообщение, состоящее из одной части с типом контента text/plain.
    public static void setTextContent(Message msg) throws MessagingException {
            // Установка типа контента
            String mytxt = "This is a test of sending a " +
                            "plain text e-mail through Java.\n" +
                            "Here is line 2.";
            msg.setText(mytxt);
 
            // Альтернативный способ
            msg.setContent(mytxt, "text/plain");
 
    }
 
    // Сообщение с типом контента multipart/mixed. Обе части имеют тип контента text/plain.
    public static void setMultipartContent(Message msg) throws MessagingException {
        // Создание и заполнение первой части
        MimeBodyPart p1 = new MimeBodyPart();
        p1.setText("This is part one of a test multipart e-mail.");
 
        // Создание и заполнение второй части
        MimeBodyPart p2 = new MimeBodyPart();
        // Here is how to set a charset on textual content
        p2.setText("This is the second part", "us-ascii");
 
        // Создание экземпляра класса Multipart. Добавление частей сообщения в него.
        Multipart mp = new MimeMultipart();
        mp.addBodyPart(p1);
        mp.addBodyPart(p2);
 
        // Установка объекта класса Multipart в качестве контента сообщения
        msg.setContent(mp);
    }
 
    // Прикрепление файла в качестве вложения. Используется JAF FileDataSource.
    public static void setFileAsAttachment(Message msg, String filename)
             throws MessagingException {
 
        // Создание и заполнение первой части
        MimeBodyPart p1 = new MimeBodyPart();
        p1.setText("This is part one of a test multipart e-mail." +
                    "The second part is file as an attachment");
 
        // Создание второй части
        MimeBodyPart p2 = new MimeBodyPart();
 
        // Добавление файла во вторую часть
        FileDataSource fds = new FileDataSource(filename);
        p2.setDataHandler(new DataHandler(fds));
        p2.setFileName(fds.getName());
 
        // Создание экземпляра класса Multipart. Добавление частей сообщения в него.
        Multipart mp = new MimeMultipart();
        mp.addBodyPart(p1);
        mp.addBodyPart(p2);
 
        // Установка экземпляра класса Multipart в качестве контента документа 
        msg.setContent(mp);
    }
 
    // Добавление в первую часть html-контента.
    // Оптправка данных любого другого типа производится аналогичным образом.
    public static void setHTMLContent(Message msg) throws MessagingException {
 
        String html = "<html><head><title>" +
                        msg.getSubject() +
                        "</title></head><body><h1>" +
                        msg.getSubject() +
                        "</h1><p>This is a test of sending an HTML e-mail" +
                        " through Java.</body></html>";
 
        // HTMLDataSource является внутренним классом
        msg.setDataHandler(new DataHandler(new HTMLDataSource(html)));
    }
 
    /*
     * Внутренний класс работает аналогично JAF datasource и добавляет HTML в контент сообщения
     */
    static class HTMLDataSource implements DataSource {
        private String html;
 
        public HTMLDataSource(String htmlString) {
            html = htmlString;
        }
 
        // Возвращаем html строку в InputStream.
        // Каждый раз возвращается новый поток
        public InputStream getInputStream() throws IOException {
            if (html == null) throw new IOException("Null HTML");
            return new ByteArrayInputStream(html.getBytes());
        }
 
        public OutputStream getOutputStream() throws IOException {
            throw new IOException("This DataHandler cannot write HTML");
        }
 
        public String getContentType() {
            return "text/html";
        }
 
        public String getName() {
            return "JAF text/html dataSource to send e-mail only";
        }
    }
 
}

Примечания

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "JavaMail" в других словарях:

  • JavaMail — Entwickler Oracle Aktuelle Version 1.4.4 (21. Januar 2011) Betriebssystem plattformunabhängig Programmier­sprache Java …   Deutsch Wikipedia

  • JavaMail — Desarrollador Oracle Corporation Información general Última versión estable 1.4.4 Género ? …   Wikipedia Español

  • Javamail — is a Java API used to receive and send email via SMTP,POP3 and IMAP. JavaMail is built into the J2EE platform, but also provides an optional package for use in J2SE.On October 22, 2007, JavaMail 1.4.1 was released.External links* [http://java.sun …   Wikipedia

  • JavaMail — est l API standard de gestion des courriers électroniques de J2EE. Usages Exemples Protocole Pop3, IMAP4 avec SSL ou non Pop3.java Protocole SMTP avec SSL ou non EMail.java Protocole NNTP (nntp provider gnu.org) NNTP.java …   Wikipédia en Français

  • Java EE version history — The Java Platform, Enterprise Edition or Java EE (formerly known as Java 2 Platform, Enterprise Edition or J2EE) has undergone several changes since 1.0 as well as numerous additions of new specifications. JPE (May 1998) Announcement of JPE… …   Wikipedia

  • Apache OpenEJB — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia

  • J2EE — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia

  • JEE — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia

  • JavaEE — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia

  • Java 2 Enterprise Edition — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»