Javamail APIは、 javax.mail.messageクラスを使用してメッセージを表します。メッセージクラスは抽象クラスであるため、サブクラスjavax.mail.internet.mimemessageクラスを使用して、メッセージクラスのインスタンスオブジェクトを作成する必要があります。簡単なテキストメッセージを作成すると、Mimemessageクラスは私たちのニーズを満たすことができます。ただし、埋め込みリソースまたは添付ファイルを含む複雑な電子メールを作成する必要がある場合は、mimemessage、javax.mail.internet.mimebodypart、javax.mail.internet.mimemultipartなどのクラスをJavamail APIに使用する必要があります。
1. Mimemessageクラスは、電子メール全体を表します
2。MimeBodyPartクラスは、電子メールのMimeメッセージを表しています
3. MimemultiPartクラスは、複数のMimeメッセージで構成されるMIMEメッセージを組み合わせたものです。
これらの3つのクラスの作業関係を以下の図に示します。
アプリケーション開発者は通常、Javamailapiを使用して電子メールコンテンツを作成する際にMimemessage、MimeBodyPart、Mimemultipartの3つの主要なクラスを使用するだけですが、クラス相続関係を理解することも必要です。次の図には、これら3つのクラスの継承関係と一般的な方法が示されています。
次に、javax.mail.internet.mimemessageクラスを使用して、簡単なテキストメッセージを作成します。
java.util.date;インポートjava.util.properties;インポートjavax.mail.message; import javax.mail.session; import javax.mail.internet.internetadress;インポートjavax.mail.internet.mimemesage; args)スロー例外{string from = "[email protected]"; string to = "[email protected]";文字列件名= "test"; string body = "test !!!"; //セッションインスタンスオブジェクトセッション= session.getDefaultInstance(new Properties())を作成します。 // mimemessageインスタンスオブジェクトを作成するmimemessage msg = new mimemessage(session); // SENDER MSG.SETFROM(新しいInternetAddress(from))を設定します。 //受信者MSG.SetRecipients(message.RecipientType.to、InternetAddress.Parse(to))を設定します。 //送信日msg.setsentdate(new date()); //電子メールの件名を設定しますmsg.setsubject(subject); //プレーンテキストコンテンツの電子メール本文を設定しますmsg.settext(body); //最終的な電子メールコンテンツを保存して生成しますmsg.savechanges(); //ファイルにmimemessageオブジェクトの内容をmsg.writeto(new fileoutputStream( "c://test.eml")); }}電子メールクライアント(Foxmailを使用して)を使用してCドライブの下でtest.emlファイルを開き、次の情報を見ることができ、メールが正常に作成されたことを示します。
上に表示されるいくつかのクラスの簡単な説明があります
1. Mimemessageクラス:上記は、Mimemessageがメッセージクラスの具体的な実装クラスであることを紹介しました。これは、メッセージクラスのインスタンスオブジェクトを作成するために使用されます。ここで、コンストラクターはパラメーターとしてセッションオブジェクトを渡します。
2。セッションクラス:このオブジェクトは、クライアントとメールサーバー間のネットワーク接続情報を収集し、メールプログラム全体を定義するために必要な環境情報を定義するために使用されます。この情報は、セッションオブジェクトの属性としてセッションオブジェクトに保存されます。セッションオブジェクトは、java.util.propertiesオブジェクトを使用して、アプリケーション全体が使用する必要があるメールサーバー、ユーザー名、パスワード情報、共有情報を取得します。セッションクラスのコンストラクターはプライベートであるため、セッションクラスが提供するgetDefaultInstance()の静的ファクトリ法を使用して、デフォルトのセッションオブジェクトを取得します。
3。プロパティクラス:このクラスは、セッションオブジェクトを作成するためのパラメーターとしてキー値ペアの情報を保存するために使用される永続的なプロパティセットを表します。ここでは、空のセットがパラメーターとして構築されています。
4。InternetAddressクラス:このクラスは、電子メールアドレスを作成するために使用される抽象クラスアドレスクラスのサブクラスです。
5。レシピエントタイプクラス:このクラスは、メッセージクラスの内部クラスです。このクラスには3つの静的変数があります。受信者を表すために、CCはCC送信者(受信者はCC送信者を知っている)を表し、BCCは送信者の秘密送信者を表します(受信者はSender Secret Senderを知りません)。
上記の電子メールには、簡単なテキストのみが含まれています。 HTMLファイルを使用して、HTMLタグを使用して電子メール本文を入力したり、HTMLタグを使用して電子メール本文に写真やサウンドを紹介するなど、電子メール本文を濃縮する必要がある場合があります。次のコードは、HTML形式を含む電子メールを作成します
java.util.date;インポートjava.util.properties;インポートjavax.mail.message; import javax.mail.session; import javax.internet.internetadress; Import javax.mail.internet.mimemesage; Import java.io.filetuttutputtream; public gaidmashis; main(string [] args)throws exception {string from = "[email protected]"; string to = "[email protected]";文字列件名= "test"; string body = "<h4>この電子メールを読むことを歓迎します</h4>"; //セッションインスタンスオブジェクトセッション= session.getDefaultInstance(new Properties())を作成します。 // mimemessageインスタンスオブジェクトを作成するmimemessage msg = new mimemessage(session); // SENDER MSG.SETFROM(新しいInternetAddress(from))を設定します。 //受信者MSG.SetRecipients(message.RecipientType.to、InternetAddress.Parse(to))を設定します。 //送信日msg.setsentdate(new date()); //メールサブジェクトを設定しますmsg.setsubject(subject); // html形式の電子メールbody msg.setcontent(body、 "text/html; charset = gb2312"); //最終メールコンテンツmsg.savechanges()を保存して生成します。 //ファイルにmimemessageオブジェクトの内容をmsg.writeto(new fileoutputStream( "c://test.eml")); }}foxmailを使用してtest.emlを開き、次のディスプレイを開きます
前のコードとの違いは、電子メールコンテンツを設定するときに、setTextメソッドの代わりにSetContentメソッドを使用し、MIMEタイプの電子メール本文をテキスト/HTMLとして指定することです。
これで、HTMLタグを使用してメールを作成することを学びましたが、意味をより直感的に表現するために、電子メールに画像を挿入する必要がある場合があります。次に、MimemultipartクラスとMimeBodyPartクラスを使用する必要があります
java.io.fileoutputStream;インポートjava.util.properties;インポートjavax.activation.datahandler; Import javax.activation.filedatasource; import javax.mail.message; Import javax.mail.session; Import javax.mail.maims.maix.mais.maidrest.maid.mais.maid.maims.maims.mais.maid.maimtrest.mabax.max.mais.maid. javax.mail.internet.mimemessage;インポートjavax.mail.internet.mimemultipart; public class picturemessage {public static void main(string [] args)throws {string from = "[email protected]"; //送信者アドレス文字列= "[email protected]"; //受信者アドレス文字列件名= "html email"; string body = "<a href = http://www.cnblogs.com>" + "ブログ庭へようこそ</a> </br>" + "<img src =/" c://dog.jpg/ ">";セッションセッション= session.getDefaultInstance(new Properties()); // MIMEMESSAGEオブジェクトを作成し、さまざまなメッセージヘッダーフィールドを設定しますmimeMessageメッセージ= new Mimemessage(session); message.setfrom(new InternetAddress(from)); message.setRecipients(message.RecipientType.to、InternetAddress.Parse(to)); message.setsubject(subject); //サブタイプ「関連」を使用してMimemultiPartオブジェクトを作成します。 mimemultipart multipart = new mimemultipart( "関連"); /** HTMLボディを表すMimeBodyPartオブジェクトを作成し、以前に作成されたmimemultipartオブジェクトに追加*/ mimebodypart htmlbodypart = new MimeBodyPart(); htmlbodypart.setcontent(body、 "text/html; charset = gb2312"); multipart.addbodypart(htmlbodypart); /**画像のコンテンツを表すMimeBodyPartオブジェクトを作成し、以前に作成されたMimemultiPartオブジェクトに追加*/ mimebodypart gifbodypart = new MimeBodyPart(); filedatasource fds = new filedatasource( "c://dog.jpg"); gifbodyPart.setFileName(fds.getName()); gifbodypart.setdatahandler(新しいDatahandler(FDS)); MultiPart.AddBodyPart(GIFBODYPART); /** mimemultipartオブジェクトをメッセージ全体のコンテンツに設定するには、更新のためにSaveChangesメソッドを呼び出すことに注意してください*/ message.setContent(MultiPart); message.savechanges(); //ファイルメッセージにmimemessageオブジェクトの内容を書き込みます。writeto(new fileoutputStream( "c://picturemessage.eml")); }}コードは少し複雑に見えます。上記の模倣、Mimemultipart、MimebodyPartの関係図を見ることができます。これにより、上記のコードを理解しやすくなります。 picturemessage.emlを開き、次の情報を確認します。これは、画像で電子メールを作成したことを示しており、画像が添付ファイルの形で電子メールに含まれています。
Mimemultipartには2つのコンストラクターがあります。
public mimemultipart()public mimemultipart(string subtype)
最初のものはパラメーターレスで、デフォルトのインスタンスオブジェクトにはMIMEタイプが混合されています。 2番目のものは、MimemultiPartクラスのインスタンスオブジェクトを作成するためにタイプを作成します。一般的に使用される3つのタイプがあります:混合、関連、および代替。 MIMEにおけるこれら3つのタイプの組み合わせ関係は次のとおりです。
次に、上記の組み合わせ関係を使用して、ボディに添付ファイルと埋め込まれたリソースを含むメッセージを作成します。
java.io.fileoutputStream;インポートjava.util.properties;インポートjavax.activation.datahandler; Import javax.activation.filedatasource; import javax.mail.message; Import javax.mail.session; Import javax.mail.maims.maix.mais.maidrest.maid.mais.maid.maims.maims.mais.maid.maimtrest.mabax.max.mais.maid. javax.mail.internet.mimemessage; Import javax.mail.internet.mimemultipart; public cless complexMessage {public static void main(string [] args)throws {session session = session.getDefaultInstance(new Properties()); mimemessage message = createmessage(session); message.writeto(new fileoutputStream( "c://complexmessage.eml")); } public static mimemessage createmessage(セッションセッション)スロー例外{string from = "[email protected]"; //送信者アドレス文字列= "[email protected]"; //受信者アドレス文字列件名= "html email"; //サブジェクト文字列= "<a href = http://www.cnblogs.com>" + "ブログパークへようこそ</a> </br>" + "<img src =/" c://dog.jpg/ ">"; mimemessage message = new Mimemessage(session); message.setfrom(new InternetAddress(from)); message.setRecipients(message.RecipientType.to、InternetAddress.Parse(to)); message.setsubject(subject); //メッセージボディと添付ファイルを表す各mimebodypartオブジェクトを作成しますmimebodypart contentpart = createcontent(body、 "c://dog.jpg"); //次の添付ファイルは、ビデオまたはオーディオMimeBodyPart AttachPart1 = createattachment( "c://music.mp3"); mimebodypart actitspart2 = createattachment( "c://video.avi"); //メッセージ本文と添付ファイルを組み合わせてmimemultipartオブジェクトを作成しますmimemultipart allmultipart = new mimemultipart( "Mixed"); AllMultipart.AddBodyPart(contentPart); allMultipart.AddBodyPart(actitsPart1); AllMultipart.AddBodyPart(aditasPart2); //電子メールコンテンツ全体を最終的なmimemultipart Object message.setContent(allMultipArt)に設定します。 message.savechanges();メッセージを返します。 } public static mimebodypart createcontent(string body、string filename)スロー例外{ /** MIMEMULTIPARTオブジェクトを組み合わせたMimemultIPARTオブジェクトを作成し、MimeBdyPartオブジェクトが保存されているMimeBodyPartオブジェクト* / MimeBodyPart ContentSpart = new MimeBodyPart(); mimemultipart contentmultipart = new mimemultipart( "関連"); /** mimeBodyPartオブジェクトを作成してHTMLボディを保存し、mimemultipartに保存*/ mimebodypart htmlbodypart = new MimeBodyPart(); htmlbodypart.setcontent(body、 "text/html; charset = gb2312"); contentmultipart.addbodypart(htmlbodypart); /**画像を保存してmimemultipartに保存するMimeBodyPartオブジェクトを作成*/ mimeBodyPart gifbodyPart = new MimeBodyPart(); filedatasource fds = new filedatasource(filename); gifbodypart.setdatahandler(新しいDatahandler(FDS)); contentmultipart.adddodypart(gifbodypart); // mimemultipartオブジェクトをmimebodypartオブジェクトcontentpart.setcontent(contentmultipart)に保存します。 return contentpart; } public static mimebodypart createattachment(string filename)スロー例外{//添付ファイルを保存するmimebodypartオブジェクトを作成し、添付ファイルのコンテンツと対応する情報mimebodypart = new MimeBodyPart(); filedatasource fds = new filedatasource(filename); ActitionPart.SetDatahandler(新しいDataHandler(FDS)); aditaspart.setFileName(fds.getName()); AttachPartを返します。 }}complexMessage.emlファイルを開くと、次のコンテンツが表示されます。
これで、プレーンテキストメール、HTML形式の電子メール、および埋め込まれた画像と添付ファイルを含むメールを作成する方法を学びました。次の記事では、3番目の記事を送信するメールを送信するメールを送信する方法を紹介します
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。