電子メールの基本概念の紹介
電子メールは、自信を伝え、オンラインでコミュニケーションをとるために使用されます。これは、最も重要なインターネットサービスの1つです。統計によると、インターネットサービスの30%が電子メールに関連しています。同時に、私たちは日常生活、仕事、オフィスで重要な役割を果たすことを否定することはできません。例:多くのオフィスオートメーションプロジェクト(OAS)には、電子メールを送信する機能があります。 Outlookなどの手動方法も使用する場合、適切ではありません。この高速時代には、作業を自動化できるように、作業効率を提供する必要があります。同時に、多くのWebサイトもメールを送信する必要があります。登録情報を使用して新たに登録されたユーザーに歓迎の電子メールを送信し、電子メールなどを通じてすべての登録メンバーにWebサイトの最新のアクティビティ情報を送信します。
電子メール開発を開始する前に:電子メールシステム、メールサーバー、電子メール、メールクライアントソフトウェア、メール送信プロトコル、電子メール伝送プロセスなど、いくつかの概念を理解する必要があります。
電子メールシステム
従来の郵便サービスと同様に、電子メールシステムは電子メールオフィス、電子メールの送信および受信システムで構成されています。送信者と受信者は、電子メールの送信および受信システムを介して電子メールを送信および受信します。これは、実際にはコンピューターで実行されているメールクライアントプログラムです。電子メールオフィスは、実際にサーバーで実行されているメールサーバープログラムであるブリッジを再生します。電子メール処理のプロセスは、郵便サービスのプロセスに似ています。
メールサーバー
メールサーバーは、電子メールの管理に使用されるデバイスです。 126、163、hotmailなど、インターネット上で利用できる電子メールサーバーが多数あります。
電子メールサーバーによって提供される主な機能:
1.ユーザーから送信されたメールを受信します。
2。ユーザーが配信した電子メールをターゲットメールサーバーに転送します。
3.他のメールサーバーによって転送されたメールを受信し、メールを管理するユーザーのメールにメールを保存します。
4.電子メールを読むために電子メールを読むようになったユーザーを提供します。
メールサーバーは、電子メールシステムのコアを形成します。各受信者には、特定のメールサーバーにメールボックス(メールボックス)があります。ボブのメールボックスは、彼に送信された電子メールメッセージを管理および維持するために使用されます。電子メールメッセージの典型的な旅は、送信者のユーザーエージェントである送信者の電子メールサーバーから始まり、受信者の電子メールサーバーに転送され、受信者のメールアドレスに配信されます。ボブがメールボックスに電子メールメッセージを表示したい場合、メールボックスを保存するメールサーバーは、彼が提供したユーザー名とパスワードで彼を認証します。 Aliceのメールサーバーは、Bobのメールサーバーの失敗にも対処する必要があります。 AliceのMail ServerがすぐにBobのメールサーバーにメールメッセージを配信できない場合、Aliceのサーバーはメッセージキューにそれらを保存し、後でそれらを配信しようとします。この試みは通常30分ごとに実行されます。数日後に試行が成功しなかった場合、サーバーはメッセージキューからメッセージを削除し、別の電子メールメッセージで送信者(つまりアリス)に通知します。
電子メール
電子メールは、ネットワークを介して互いに情報を送信および受信する最新の通信方法です。これは、電子的な手段で情報交換を提供する通信方法であり、インターネット上で最も広く使用されているサービスです。ネットワークの電子メールシステムを通じて、ユーザーは世界のどのコーナーでも非常に低価格で非常に速い方法でインターネットユーザーに連絡できます。これらのメールは、テキスト、画像、サウンドなどのさまざまな方法で同時に、ユーザーが多数の無料ニュースや特別なメールを取得し、簡単な情報検索を実現できます。
電子メールは、エンベロープとコンテンツの2つの部分で構成されています。封筒はメールヘッダーとも呼ばれ、電子メールサーバーはエンベロープの信頼性に基づいてメールを配信します。コンテンツはメール本文と呼ばれ、電子メールの特定のコンテンツを提供するために使用されます。
インターネット上の電子メールアドレスは世界中でユニークであり、その形式は「電子メール@メールサーバードメイン名」です。ドメイン(メールドメイン)は、電子メールサーバーの基本管理ユニットです。電子メールサービスはドメインベースであり、各メールボックスは1人のユーザーに対応しています。メールサーバードメイン名は登録されたDNSドメイン名である必要があり、MX(メールスイッチ)レコードと一致する必要があります。 DNSは、ドメイン名とホスト名をIPアドレスに解決するために使用されます。 MXレコードは、ドメイン名のメールサーバーホストレコードを指しており、メールサービスに捧げられています。
クライアントソフトウェアにメールしてください
メールクライアントソフトウェアは、ユーザーがSMTPサーバーとPOP3/IMAPメールサーバーに電子メールを送信してユーザーのメールを読み取るために使用されるために主に使用される電子メールサーバーとの通信を担当します。メールクライアントソフトウェアは通常、メールの書き込み、送信、受信を統合します。
メール
電子メールアドレスとしても知られる各電子メールサーバーの上で複数のメールアドレスを開始できます。これは、ユーザーが他の人からメールを受け入れて送信する実際の郵送先住所に似ています。
電子メールを取得するには、電子メールサーバーに適用する必要があります。正確には、電子メールは実際にユーザーが電子メールサーバーに適用するアカウントです。メールサーバーは、受信したメールをアカウントに割り当てられたメールボックススペースに保持し、ユーザーはアドレスで受信された電子メールメッセージを表示するためにリクエストするユーザー名とパスワードを介してメールサーバーにログインします。
電子メール送信プロセス
電子メールシステムはクライアント/サーバーモードです。電子メール配信には、次の3つの重要なモジュールが必要です。
UA(メールユーザーエージェント、メールユーザーエージェント):ユーザーは、それを介して電子メールサーバーを扱います。 MUAは実際にはメールクライアントソフトウェアです。
MTA(メール転送エージェント、メール転送エージェント):主に、受信および送信されたすべてのメールを処理し、MUAまたはMTAにメール配信サービスを提供し、他のMTAから送信されたメールを受信します。
MDA(郵便配送エージェント、メール配送エージェント):郵便物の現地配送を担当しています。 MTAが特定の電子メールをローカルユーザーに送信することを決定した場合、MTAは配布のためにMDAプログラムに電子メールを渡します。つまり、ユーザーに配信されます。
特定の伝送プロセスは次のとおりです。
1.送信者はMUAを使用してMTAにメールを送信します。
2。メールを受信した後、MTAは受信者がローカルアカウントであるかどうかを決定します。ローカルアカウントの場合、アカウントのメールアドレスにMDAに引き渡され、送信プロセスを完了し、ステップ5にスキップします。そうでない場合は、次のステップを実行します。
3。MTAは、電子メールリレー転送設定に基づいてメールを転送する方法を決定します。
4.最終目的のMTAは、MDAを処理に引き渡し、MDAは受信者のメールアドレスにメールを配信します。
5.受信者は、MUAを使用して、電子メールアドレスがPOP/IMAPプロトコルを介して配置されているサーバーに接続し、受信トレイにメールがあるかどうかを確認するよう要求します。電子メールがある場合、受信者のMUAはそれを介して送信されます。
注:電子メールアクセスサービスは、電子メールを受け取ったMTAではなく、POPまたはIMAPサーバーソフトウェアになるように求められています。 2つの役割は分離されています。
メール転送プロトコル
電子メールサービス送信は、主に次の3つのネットワークプロトコルを使用します
SMTP(単純なメール転送プロトコル)
SMTPは単純なメール転送プロトコルです。標準のTCPポートは25です。MUAはメールをMTAに送信し、MTAは次のMTAにメールを送信します。どちらもSMTPを使用する必要があります。 SMTPの目標は、電子メールを確実に効率的に配信することであり、配信サブシステムとは無関係であり、データユニットの順序が送信されることを保証する1つのチャネルのみを必要とします。
SMTPは、他のメールサーバーのユーザーが収集できない「一方向」プロトコルです。それ自体がクライアント/サーバーモードを採用します。メールの送信を担当するSMTPプロセスはSMTPクライアントであり、メールの受信を担当するSMTPプロセスはSMTPサーバーです。完全なSMTP通信プロセスには、主に接続の確立、メールの配信、接続のリリースの3つのプロセスが含まれます。
接続を確立する:最初に、送信者は電子メールをメールキャッシュに送信します。 SMTPクライアントは、電子メールキャッシュを定期的にスキャンします。メッセージが表示されると、SMTPサーバーとのTCP接続を確立し、HRLLOコマンドを送信して送信者のホスト名を添付します。
配信メール:SMTPクライアントはメールコマンドを使用して電子メールの送信を開始します。これにより、送信者のアドレスが提供されます。次に、RCPTコマンドを実行し、受信者のアドレスを提供します。最後に、データコマンドを実行して電子メールコンテンツを転送します。
接続のリリース:メールが配信された後、SMTPクライアントはOUTコマンドを送信して、TCP接続を閉じるよう要求します。
POP(郵便局契約)
POPは郵便局プロトコルです。標準のTCPポートは110です。主に電子メールの受信に使用されます。 MUAは、POPプロトコルを介してMTAのユーザーインボックスに接続して、受信トレイでユーザーメールを読み取るかダウンロードします。
現在使用されているPOPプロトコルはPOP3です。 POP3はTCPを送信プロトコルとして使用します。
IMAP(インターネット情報アクセスプロトコル)
IMAPはインターネットメッセージアクセスプロトコルです。標準のTCPポートは143であり、MUAはMTAからメールを収集することもできます。ターゲットボールIMAPプロトコルのバージョンはIMAP4です。
POPとIMAPの両方を使用して、クライアント/サーバーモードの両方で電子メールを収集できます。 2つの主な違いは、彼らが異なる方法で電子メールを取得することです。 POPを使用する場合、メールはサーバーに存在します。メールが受信されると、メールはサーバーからユーザーのコンピューターにダウンロードされます。 IMAPは、メールがサーバーに保存されている状況を理解でき、ダウンロードされたメールはまだサーバーに貼り付けられており、メールアーカイブと共有を容易にします。
Javamail
1。Javamailの紹介
Javamailは、名前が示すように、開発者が電子メールを処理するためのプログラミングインターフェイスを提供します。これは、電子メールを処理するためにSunがリリースしたAPIです。一般的に使用されるメール転送を便利に実行できます。 Javamail APIは、Sunが提供する標準開発パッケージであり、Java開発者がアプリケーションで電子メールの送信および受信機能を実装するように促進します。 SMTP、POP3、IMAPなど、一般的に使用される電子メールプロトコルをサポートしています。開発者がJavamail APIを使用して電子メール処理ソフトウェアを作成する場合、基礎となるメールプロトコルの実装の詳細を検討する必要はありません。Javamail開発パッケージの対応するAPIクラスを呼び出すだけです。
2。Javamail開発環境
Javamail開発の前に、対応するJARパッケージをインポートする必要があります。 JARパッケージは、Oracleの公式Webサイト:http://www.oracle.com/technetwork/java/javamail/index.htmlからダウンロードできます。
ダウンロードが完了したら、次のディレクトリを取得できます。
その中で、Mail.jar:Javamailプログラムを開発するために使用する必要があるコア開発パッケージです。
Lib Subdirectory:このディレクトリには、5つの独立した電子メール開発パッケージが含まれています。Smtp.jar、pop3.jar、imap.jar、mailapi.jar。これらの5つのJARファイルは、mail.jarファイルの分類されたパッケージです。その中でも、Mailapi.jarはメールコンテンツを作成するAPIクラスをカプセル化し、メールの送信と通常の開発者への受信を呼び出しますが、他の3つのJARファイルは、プロトコルに対応する名前でサービス実装プログラムをカプセル化します。 。 Java Mailプログラムをコンパイルするときは、Mailapi.jarファイルのみが必要ですが、実行時には、対応するメールプロトコルの基礎となるサービス実装プログラムが必要です。アプリケーションでメール送信機能を使用する必要がある場合は、2つのファイルsmtp.jarとmailapi.jarのみをインストールできます。メール受信機能のみを使用する必要がある場合は、mail.jarファイル全体をインストールせずに、2つのJarファイルpop3.jar、imap.jar、mailapi.jarのみをインストールできます。
LIBディレクトリは次のとおりです。
3。JavamailAPIの紹介
Javamail APIは通常、その機能に従って次の3つのカテゴリに分割されます。
1.電子メールコンテンツAPIを作成および解析します。メッセージクラスは、電子メールを作成および解析するためのコアAPIです。そのインスタンスオブジェクトは電子メールを表します。
2。メールを送信するためのAPI。トランスポートクラスは、メールを送信するためのコアAPIクラスです。そのインスタンスオブジェクトは、SMTPプロトコルなどの特定のメール送信プロトコルを実装するメール送信オブジェクトを表します。
3。電子メールを受信するためのAPI。ストアクラスは、メールを受信するためのコアAPIクラスです。そのインスタンスオブジェクトは、POP3プロトコルなどの特定の電子メール受信プロトコルを実装する電子メール受信オブジェクトを表します。
Javamailのワークフローは次のとおりです。
このワークフローでは、4つのオブジェクト、メッセージ、セッション、トランスポート、およびストアが、電子メールの送信と受信に密接に接続されています。これらの4つのコアAPIの関数と機能を理解し、彼らの仕事上の関係と電子メールワークフローを知るだけで、Javamailを簡単に書くことができます。 Javamailの補助クラスについては、それらが必要なときに、手がかりに従って、文書をチェックして問題を解決することができます。
コアAPIの紹介:
メッセージ
メッセージクラスは、メールを作成および解析するためのコアAPIであり、そのインスタンスオブジェクトは電子メールを表します。クライアントが電子メールを送信したら、最初に電子メールAPIを使用し、作成した電子メールデータをメッセージオブジェクトにカプセル化し、このオブジェクトを電子メールに渡してAPIを送信して送信します。クライアントが電子メールを受信すると、APIを受信している電子メールはメッセージのインスタンスオブジェクトに受信した石油価格データをインストールし、クライアントは電子メールを使用してAPIを解析して、受信した電子メールデータをこのオブジェクトから解析します。
セッション
セッションクラスは、アプリケーション全体に必要な環境情報を定義するために使用され、ホスト名、ポート番号、使用されるメールの送信および受信プロトコルなど、メールサーバーとのネットワーク接続を確立するためのクライアントのセッション情報を収集するために使用されます。セッションオブジェクトは、これらのセッション情報に基づいてメールを送信および受信するためのストアおよびトランスポートオブジェクトを構築し、クライアントがメッセージオブジェクトを作成するための情報サポートを提供します。
輸送
トランスポートクラスは、メールを送信するためのコアAPIクラスです。そのインスタンスオブジェクトは、SMTPプロトコルなどの特定のメール送信プロトコルを実装するメール送信オブジェクトを表します。クライアントプログラムがメッセージオブジェクトを作成した後、電子メール送信APIを使用してTransportオブジェクトを取得し、メッセージオブジェクトをTransportオブジェクトに渡し、送信方法を呼び出して指定されたSMTPサーバーに電子メールを送信する必要があります。
店
ストアクラスは、メールを受信するためのコアAPIクラスです。そのインスタンスオブジェクトは、POP3やIMAPプロトコルなどの特定のメール受信プロトコルを実装するメール受信オブジェクトを表します。クライアントプログラムがメールを受信した場合、Storeオブジェクトを取得するためにAPIを受信するメールを使用して、Storeオブジェクトの受信方法を呼び出して、指定されたPOP3サーバーからメールデータを取得し、メールデータをメールを表すメッセージオブジェクトにカプセル化する必要があります。
IV。例
パブリッククラスjavamail_01 {public static void main(string [] args)throws exception {properties props = new Properties(); props.setProperty( "mail.smtp.auth"、 "true"); props.setProperty( "mail.transport.protocol"、 "smtp");セッションセッション= session.getInstance(props); session.setDebug(true);メッセージmsg = new mimemessage(session); msg.setsubject( "これはテストプログラムです..."); msg.settext( "こんにちは!これは私の最初のJavamailプログラムです----チェンミン"); msg.setfrom(new InternetAddress( "******@163.com"));輸送輸送= session.getTransport(); Transport.Connect( "smtp.163.com"、25、 "*********"、 "************"); Transport.sendmessage(msg、new Address [] {new InternetAddress( "Chenssy9[email protected]")}); System.out.println( "電子メールが正常に送信されました..."); Transport.Close(); }}