Javamail-api-core-classes

提供:Dev Guides
移動先:案内検索

JavaMail API-コアクラス

JavaMail APIは、電子メールメッセージの送信、読み取り、削除に使用されるいくつかのインターフェイスとクラスで構成されています。 JavaMail APIには多くのパッケージがありますが、Java Mail APIで頻繁に使用される主な2つのパッケージ、_javax.mail_および_javax.mail.internet_パッケージについて説明します。 これらのパッケージには、すべてのJavaMailコアクラスが含まれています。 彼らです:

Class Description
javax.mail.Session The key class of the API. A multithreaded object represents the connection factory.
javax.mail.Message An abstract class that models an e-mail message. Subclasses provide the actual implementations.
javax.mail.Address An abstract class that models the addresses (from and to addresses) in a message. Subclasses provide the specific implementations.
javax.mail.Authenticator An abstract class used to protect mail resources on the mail server.
javax.mail.Transport An abstract class that models a message transport mechanism for sending an e-mail message.
javax.mail.Store An abstract class that models a message store and its access protocol, for storing and retrieving messages. A Store is divided into Folders.
javax.mail.Folder An abstract class that represents a folder of mail messages. It can contain subfolders.
javax.mail.internet.MimeMessage Message is an abstract class, hence must work with a subclass; in most cases, you’ll use a MimeMessage. A MimeMessage is an e-mail message that understands MIME types and headers.
javax.mail.internet.InternetAddress This class represents an Internet email address using the syntax of RFC822. Typical address syntax is of the form [email protected] or Personal Name <[email protected]>.

これらの各クラスを詳細に研究してみましょう。以降の章では、これらの各クラスを使用して例を学習します。

[class_session]#

セッションクラス

_Session_クラスはJavaMail APIの主要なクラスであり、サブクラス化されていません。 _Session_オブジェクトは、構成設定と認証の両方を処理するJavaMail APIの接続ファクトリーとして機能します。

_Session_オブジェクトは、次の方法で作成できます。

  • JNDIサービスに保存されている管理対象オブジェクトを検索することにより
InitialContext ctx = new InitialContext();
Session session = (Session) ctx.lookup("usersMailSession");

+ _usersMailSession_は、Sessionオブジェクトの管理対象オブジェクトとして使用されるJNDI名オブジェクトです。 _usersMailSession_は、メールサーバーのホスト名、メールを送信するユーザーアカウント、Sessionオブジェクトでサポートされるプロトコルなどの情報を含む、名前と値のペアとして必要なパラメーターを使用して作成および構成できます。 * Sessionオブジェクトを作成するもう1つの方法は、_java.util.Properties_オブジェクトを使用して、メールサーバー名、ユーザー名、パスワード、その他の情報などのデフォルト情報の一部をオーバーライドできるプログラムによるアプローチに基づいています。アプリケーション全体で共有されます。

_Session_クラスのコンストラクターは_private_です。 したがって、_Session_クラスは、_Session_オブジェクトを取得する2つのメソッド(以下にリスト)を提供します。

  • * getDefaultInstance()*:getDefaultInstance()メソッドを使用してセッションオブジェクトを取得するには、2つのメソッドがあります。 デフォルトのセッションを返します。
public static Session getDefaultInstance(Properties props)
public static Session getDefaultInstance(Properties props,Authenticator auth)
  • * getInstance()*:getInstance()メソッドを使用してセッションオブジェクトを取得するには、2つのメソッドがあります。 新しいセッションを返します。
public static Session getInstance(Properties props)
public static Session getInstance(Properties props,Authenticator auth)

[class_message]#

メッセージクラス

Sessionオブジェクトを作成したら、送信するメッセージの作成に進みます。 メッセージタイプは_javax.mail.Message_になります。

  • _Message_は抽象クラスです。 したがって、そのサブクラス_javax.mail.internet.MimeMessage_クラスが主に使用されます。
  • メッセージを作成するには、MimeMessageクラスコンストラクターでセッションオブジェクトを渡す必要があります。 例えば:
MimeMessage message=new MimeMessage(session);
  • メッセージオブジェクトが作成されたら、情報を保存する必要があります。 _Message_クラスはjavax.mail.Partインターフェースを実装し、javax.mail.internetを実装します。 MimeMessageはjavax.mail.internet.MimePartを実装します。 message.setContent()またはmimeMessage.setText()を使用してコンテンツを保存できます。
  • MimeMessageクラスの一般的に使用されるメソッドは次のとおりです。
Method Description
public void setFrom(Address address) used to set the from header field.
public void addRecipients(Message.RecipientType type, String addresses) used to add the given address to the recipient type.
public void setSubject(String subject) used to set the subject header field.
public void setText(String textmessage) used to set the text as the message content using text/plain MIME type.

[class_address]#

住所クラス

SessionおよびMessage(コンテンツが格納されている)オブジェクトが用意できたので、_Address_オブジェクトを使用してレターをアドレス指定する必要があります。

  • _Address_は抽象クラスです。 したがって、そのサブクラス_javax.mail.internet.InternetAddress_クラスが主に使用されます。
  • _Address_は、メールアドレスを渡すだけで作成できます。
Address address = new InternetAddress("[email protected]");
  • アドレスを作成するもう1つの方法は、名前alogにメールアドレスを渡すことです。
Address address = new InternetAddress("[email protected]", Manisha);
  • 以下のように、To、From、CC、BCCフィールドを設定することもできます
  • message.setFrom(アドレス)
  • message.addRecipient(type、address)
  • 3つの定義済みアドレスタイプは、次のいずれかの値を持つオブジェクトです。
  • Message.RecipientType.TO
  • Message.RecipientType.CC
  • Message.RecipientType.BCC

[class_authenticator]#

オーセンティケータークラス

クラスAuthenticatorは、ネットワーク接続の認証を取得する方法を知っているオブジェクトを表します。 通常、ユーザーに情報の入力を求めることでこれを行います。

  • _Authenticator_は抽象クラスです。 サブクラス_PasswordAuthentication_を作成し、ユーザー名とパスワードをコンストラクターに渡します。
  • セッションオブジェクトを作成するときは、AuthenticatorをSessionに登録する必要があります。

以下は、_Authenticator_の使用例です。

Properties props = new Properties();
//Override props with any customized data
PasswordAuthentication auth = new PasswordAuthentication("manisha", "pswrd")
Session session = Session.getDefaultInstance(props, auth);

[class_transport]#

輸送クラス

_Transport_クラスは、メッセージトランスポートメカニズムとして使用されます。 このクラスは通常、SMTPプロトコルを使用してメッセージを送信します。

  • これは抽象クラスです。
  • 静的な_send()_メソッドを呼び出すだけで、クラスのデフォルトバージョンを使用できます。
Transport.send(message);
  • メッセージを送信するもう1つの方法は、プロトコルのセッションから特定のインスタンスを取得し、ユーザー名とパスワード(不要な場合は空白)を渡し、メッセージを送信し、接続を閉じることです。
message.saveChanges();//implicit with send()
//Get transport for session
Transport transport = session.getTransport("smtp");
//Connect
transport.connect(host, username, password);
//repeat if necessary
transport.sendMessage(message, message.getAllRecipients());
//Done, close the connection
transport.close();

[class_store]#

店舗クラス

メッセージを保存および取得するための、メッセージストアとそのアクセスプロトコルをモデル化する抽象クラス。 サブクラスは実際の実装を提供します。 _Store_は_Service_クラスを拡張し、ストアの命名、ストアへの接続、および接続イベントのリッスンのための多くの一般的なメソッドを提供します。

クライアントは、データベースアクセスプロトコルを実装するStoreオブジェクトを取得することにより、メッセージストアにアクセスします。 ほとんどのメッセージストアでは、アクセスを許可する前にユーザーを認証する必要があります。 connectメソッドはその認証を実行します。

Store store = session.getStore("pop3");
store.connect(host, username, password);

[class_folder]#

フォルダークラス

_Folder_は、メールメッセージのフォルダーを表す抽象クラスです。 サブクラスは、プロトコル固有のフォルダーを実装します。 フォルダーにはメッセージだけでなくサブフォルダーも含めることができるため、階層構造を提供します。

ストアに接続した後、フォルダを取得できます。フォルダを開いてからメッセージを読むことができます。

Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();

Folderオブジェクトの_getFolder(String name)_メソッドは、名前付きサブフォルダーを返します。 メールの読み取りが完了したら、ストアとフォルダーの両方の接続を閉じます。

ストアとフォルダーの関係は次の画像で確認できます。

JavaMail APIストアとフォルダーの関係

ご覧のとおり、ユーザーアカウントごとに、サーバーにはユーザーのメッセージを保存するストアがあります。 ストアはフォルダーに分割され、「受信ボックス」フォルダーは、主に電子メールメッセージを含むフォルダーです。 フォルダーには、メッセージとサブフォルダーの両方を含めることができます。