ホームページ >Java >&#&チュートリアル >Java で電子メールの添付ファイルを送信する
次の記事では、Java での電子メール添付ファイルの送信の概要を説明します。電子メールを電子メール サービス プロバイダーの資格情報に接続する機能により、電子メールの添付ファイルを送信できるようになります。これを完了するには、電子メール ホスト サービスを使用する必要があります。その後、電子メール ホスト、ポート、ユーザー名、パスワードを入力してセッション オブジェクトを作成します。電子メール ホスト サービスは、これらすべての仕様をコードで追加提供します。これにより、任意の偽の SMTP テスト サーバーを利用でき、JavaMail の構成と認証を管理するために、セッション オブジェクトが接続ファクトリーとして機能します。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
JavaMail API は、添付ファイル付きの電子メールを送信するための BodyPart や MimeBodyPart などのさまざまな便利なクラスを提供します。 JavaMail API の電子メール送信段階を理解し、JavaMail API を使用して電子メールを送信するには、次の 2 つの jar ファイルをロードする必要があります。
Session オブジェクトができたので、MimeMessage オブジェクトと MimeBodyPart オブジェクトを構築しましょう。
電子メール メッセージを生成するには、次のオブジェクトを使用します:
さらに、Java 電子メール プログラムの手順は次のとおりです。
電子メール サービス プロバイダーの資格情報を構成する必要があります。次に、電子メールのホスト、ポート、ユーザー名、およびパスワードを入力して、Session オブジェクトを構築します。電子メール ホスト サービスは、これらすべての機能を提供します。コードには、偽の SMTP テスト サーバーを利用できます。 JavaMail の構成と認証を管理するために、セッション オブジェクトは接続ファクトリーとして機能します。 Session オブジェクトができたので、MimeMessage オブジェクトと MimeBodyPart オブジェクトを構築します。電子メール メッセージを生成するには、次のオブジェクトを使用します:
コード:
Message testmsg = new MimeMessage(sess); testmsg.setFrom(new InternetAddress(fromaddr)); testmsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); testmsg.setSubject("Welcome to our Test Site");
上記のコードは、MimeMessage セッション オブジェクトを使用してメッセージ サービスを作成するのに役立ちます。これにより、セッション(sess)をメッセージキューのパラメータとして渡すことができます。インスタンスを使用すると、From アドレスまたは送信者リストを渡すために使用される setFrom() というメソッドを呼び出すことができます。同じインスタンスで、Message クラスと同様にパラメータを渡して setRecipients() と呼ばれる他のメソッドを呼び出し、To メール受信者を呼び出す RecipientType と呼ばれる追加メソッドを呼び出します。さらに、宛先アドレス受信者を渡すための parse(to) と呼ばれるデフォルト メソッドで InternetAddress を呼び出すことができます。 setSubject() は、Message クラスのインスタンスに文字列値を渡します。上記の抜粋では、from、to、subject などの必要な情報を含む MimeMessage オブジェクトが生成されています。次に、電子メール本文を含む MimeBodyPart オブジェクトがあります。さらに、メール サービスに添付ファイルを追加するには、別の MimeBodyPart を構築する必要があります。
コード:
MimeBodyPart mpart = new MimeBodyPart(); mpart.attachFile(new File("path/to/file"));
The MimeBodyPart is the mail class body that created the instance and the same will be called for the method called attachFile() with additional parameters like to pass the new File object creation with file path parameters. TLS authentication is possible but different in several ways. As we can see, we are calling additional EmailUtil class methods to deliver email attachments and images even though we haven’t yet defined them.
Given below is the example mentioned:
Code:
package TestNG; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class NewTest{ public static void main(String[] args) throws Exception { Properties props = new Properties(); props.setProperty("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", "465"); props.put("mail.debug", "true"); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); Session sess = Session.<em><i>getDefaultInstance</i></em>(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("[email protected]","xodbizaoiqijifre"); } }); try{ MimeMessage msg = new MimeMessage(sess); msg.setFrom(new InternetAddress("[email protected]")); msg.addRecipient(Message.RecipientType.<em><i>TO</i></em>,new InternetAddress("[email protected]")); msg.setSubject("Welcome To My Domain"); BodyPart mbody = new MimeBodyPart(); mbody.setText("Your Message body is sent"); MimeBodyPart mbody1 = new MimeBodyPart(); String filename = "D://articles1.txt"; DataSource source = new FileDataSource(filename); mbody1.setDataHandler(new DataHandler(source)); mbody1.setFileName(filename); Multipart mpart = new MimeMultipart(); mpart.addBodyPart(mbody); mpart.addBodyPart(mbody1); msg.setContent(mpart ); Transport.<em><i>send</i></em>(msg); System.<em><i>out</i></em>.println("Your email is sent successfully"); }catch (MessagingException ex) {ex.printStackTrace();} } }
Output:
Given below are the FAQs mentioned:
Answer: When enabling the functionality of sending email attachments, the email host, port, username, and password are entered after configuring the email with the email service provider’s credentials.
Answer: The abstract Multipart class is implemented by the MimeMultipart class, which employs MIME standards for multipart data.
Answer: Get the compose message for the session object.
Create a MimeBodyPart object and specify the message text in it. Create another MimeBodyPart object and add a DataHandler object to it. Create a Multipart object and include MimeBodyPart objects in it.
Send a message by setting the multipart object to the message object.
To obtain the session object, which contains all of the host’s data, including hostname, username, and password. Write the message, the message along with the attachment, and send it. The JavaMail API provides a platform- and protocol-neutral foundation for building mail and messaging applications. The JavaMail API makes a number of abstract classes defining the components of a mail system available.
以上がJava で電子メールの添付ファイルを送信するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。