Интернет магазин китайских планшетных компьютеров



Компьютеры - JavaMail

07 мая 2011





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

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

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

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

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
// Отправка простого сообщения с типом контента "text/plain"
public class TestEmail {
 
    public static void main {
 
        // Сюда необходимо подставить адрес получателя сообщения
        String to = "sendToMailAddress";
        String from = "sendFromMailAddress";
        // Сюда необходимо подставить SMTP сервер, используемый для отправки
        String host = "smtp.yourisp.net";
 
        // Создание свойств, получение сессии
        Properties props = new Properties;
 
        // При использовании статического метода Transport.send
        // необходимо указать через какой хост будет передано сообщение
        props.put;
        // Включение debug-режима
        props.put;
        Session session = Session.getInstance;
 
        try {
            // Создание объекта сообщения
            Message msg = new MimeMessage;
 
            // Установка атрибутов сообщения
            msg.setFrom);
            InternetAddress address = {new InternetAddress};
            msg.setRecipients;
            msg.setSubject;
            msg.setSentDate);
 
            // Установка тела сообщения
            msg.setText("This is a test of sending a " +
                        "plain text e-mail through Java.\n" +
                        "Here is line 2.");
 
            // Отправка сообщения
            Transport.send;
        }
        catch  {
            // Печать информации об исключении в случае его возникновения
            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 to = "sendToMailAddress";
        String from = "sendFromMailAddress";
        // Сюда необходимо подставить SMTP сервер, используемый для отправки
        String host = "smtpserver.yourisp.net";
 
        // Создание свойств, получение сессии
        Properties props = new Properties;
 
        // При использовании статического метода Transport.send
        // необходимо указать через какой хост будет передано сообщение
        props.put;
        // Включение debug-режима
        props.put;
 
        // Получение сессии
        Session session = Session.getInstance;
 
        try {
            // Получение объекта транспорта для передачи электронного сообщения
            Transport bus = session.getTransport;
 
            // Устанавливаем соединение один раз
            // Метод Transport.send отсоединяется после каждой отправки            
            bus.connect;
            // Обычно для SMTP сервера необходимо указать логин и пароль
            bus.connect;
 
            // Создание объекта сообщения
            Message msg = new MimeMessage;
 
            // Установка атрибутов сообщения
            msg.setFrom);
            InternetAddress address = {new InternetAddress};
            msg.setRecipients;
            // Парсинг списка адресов разделённых пробелами. Строгий синтаксис
            msg.setRecipients(Message.RecipientType.CC,
                                InternetAddress.parse);
            // Парсинг списка адресов разделённых пробелами. Более мягкий синтаксис.
            msg.setRecipients(Message.RecipientType.BCC,
                                InternetAddress.parse);
 
            msg.setSubject;
            msg.setSentDate);
 
            // Установка контента сообщения и отправка
            setTextContent;
            msg.saveChanges;
            bus.sendMessage;
 
            setMultipartContent;
            msg.saveChanges;
            bus.sendMessage;
 
            setFileAsAttachment;
            msg.saveChanges;
            bus.sendMessage;
 
            setHTMLContent;
            msg.saveChanges;
            bus.sendMessage;
 
            bus.close;
 
        }
        catch  {
            // Печать информации обо всех возможных возникших исключениях
            mex.printStackTrace;
            // Получение вложенного исключения
            while  != null) {
                // Получение следующего исключения в цепочке
                Exception ex = mex.getNextException;
                ex.printStackTrace;
                if ) break;
                else mex = ex;
            }
        }
    }
 
    // Сообщение, состоящее из одной части с типом контента text/plain.
    public static void setTextContent throws MessagingException {
            // Установка типа контента
            String mytxt = "This is a test of sending a " +
                            "plain text e-mail through Java.\n" +
                            "Here is line 2.";
            msg.setText;
 
            // Альтернативный способ
            msg.setContent;
 
    }
 
    // Сообщение с типом контента multipart/mixed. Обе части имеют тип контента text/plain.
    public static void setMultipartContent throws MessagingException {
        // Создание и заполнение первой части
        MimeBodyPart p1 = new MimeBodyPart;
        p1.setText;
 
        // Создание и заполнение второй части
        MimeBodyPart p2 = new MimeBodyPart;
        // Here is how to set a charset on textual content
        p2.setText;
 
        // Создание экземпляра класса Multipart. Добавление частей сообщения в него.
        Multipart mp = new MimeMultipart;
        mp.addBodyPart;
        mp.addBodyPart;
 
        // Установка объекта класса Multipart в качестве контента сообщения
        msg.setContent;
    }
 
    // Прикрепление файла в качестве вложения. Используется JAF FileDataSource.
    public static void setFileAsAttachment
             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;
        p2.setDataHandler);
        p2.setFileName);
 
        // Создание экземпляра класса Multipart. Добавление частей сообщения в него.
        Multipart mp = new MimeMultipart;
        mp.addBodyPart;
        mp.addBodyPart;
 
        // Установка экземпляра класса Multipart в качестве контента документа 
        msg.setContent;
    }
 
    // Добавление в первую часть html-контента.
    // Оптправка данных любого другого типа производится аналогичным образом.
    public static void setHTMLContent 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));
    }
 
    /*
     * Внутренний класс работает аналогично JAF datasource и добавляет HTML в контент сообщения
     */
    static class HTMLDataSource implements DataSource {
        private String html;
 
        public HTMLDataSource {
            html = htmlString;
        }
 
        // Возвращаем html строку в InputStream.
        // Каждый раз возвращается новый поток
        public InputStream getInputStream throws IOException {
            if  throw new IOException;
            return new ByteArrayInputStream);
        }
 
        public OutputStream getOutputStream throws IOException {
            throw new IOException;
        }
 
        public String getContentType {
            return "text/html";
        }
 
        public String getName {
            return "JAF text/html dataSource to send e-mail only";
        }
    }
 
}


Просмотров: 1729


<<< JavaFX
JavaRebel >>>