English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Springフレームワークは、メールの送信と受信に使用する多くの有用なインターフェースとクラスを提供します。
org.springframework.mail パッケージはSpringフレームワーク内でメールサポートを提供する根本的なパッケージです。
SpringフレームワークでJavaメールをサポートするインターフェースとクラスは以下の通りです:
MailSenderインターフェース: より根本的なインターフェースです。簡単なメールの送信の基本機能を提供します。 JavaMailSenderインターフェース: MailSenderのサブインターフェースです。MIMEメッセージをサポートします。主に MimeMessageHelper クラスと一緒に使用して、JavaMailの MimeMessage 、および添付ファイルなど。Springフレームワークはこの使用を推奨します。 MimeMessagePreparator このインターフェースを使用するためのメカニズム JavaMailSenderImplクラス: このインターフェースの実装を提供します。JavaMail MimeMessagesおよびSpring SimpleMailMessagesをサポートします。 SimpleMailMessageクラス: 簡単なメールを作成するために使用されます。送信元、宛先、カラベル、件名、テキストメールが含まれます。 MimeMessagePreparatorインターフェース: これはJavaMail MIMEメッセージを準備するためのコールバックインターフェースです。 MimeMessageHelperクラス: これはMIMEメッセージを作成するためのヘルパークラスです。画像、典型的なメールの添付ファイル、HTMLテキスト内容などのインライン要素をサポートしています。
以下のSpringメールクラスを使用して:
SimpleMailMessage メッセージを作成するために使用されます。 JavaMailSenderImpl メッセージを送信するために使用されます。
Springフレームワークを使用してメールを送信するために、以下のファイルを作成する必要があります。
MailMail.java applicationContext.xml Test.java このサンプルを実行するには、mail.jarとactivation.jarファイルをロードする必要があります。
mail.jarとActivation.jarをダウンロードするか、Oracleのウェブサイトで最新バージョンをダウンロードしてください。
1)MailMail.java
これはmailSender属性を定義するシンプルなクラスです。実行時にその属性にMailSenderオブジェクトを提供します。
sendMail()メソッドでは、SimpleMailMessageのインスタンスを作成し、情報(例えば、送信元、宛先、件名、メッセージ)をそのオブジェクトに保存しています。
ここでは、MailSenderインターフェースのsend()メソッドを使用して簡単なメールを送信します。
package com.w3codebox; import org.springframework.mail.MailSender; import org.springframework.mail.SimpleMailMessage; public class MailMail{ private MailSender mailSender; public void setMailSender(MailSender mailSender) { this.mailSender = mailSender; } public void sendMail(String from, String to, String subject, String msg) { //creating message SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(msg); //sending message mailSender.send(message); } }
2)applicationContext.xml
このxmlファイルで、JavaMailSenderImplクラスにbeanを作成します。以下の属性の値を定義する必要があります:
ホスト ユーザー名 パスワード javaMailProperties
MailMailクラスにbeanを作成するためにmailSender属性を使用します。今や、MailMailクラスのmailSender属性にJavaMailSenderImplクラスのインスタンスを設定します。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xmlns:p="http://www.springframework.org/schema/p xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.gmail.com"}} /> <property name="username" value="[email protected]" /> <property name="password" value="yourgmailpassword" /> </property> </props> <prop key="mail.smtp.auth">true</prop>/prop> <prop key="mail.smtp.socketFactory.port">465</prop> <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop> <prop key="mail.smtp.port">465</prop> </props> </property> </bean> <bean id="mailMail" class="com.w3codebox.MailMail"> <property name="mailSender" ref="mailSender" /> </bean> </beans>
3)Test.java
このクラスはapplicationContext.xmlファイルからmailMailのbeanを取得し、MailMailクラスのsendMailメソッドを呼び出します。
package com.w3codebox; import org.springframework.beans.factory.*; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.*; public class Test { public static void main(String[] args) { Resource r = new ClassPathResource("applicationContext.xml"); BeanFactory b = new XmlBeanFactory(r); MailMail m = (MailMail)b.getBean("mailMail"); String sender="[email protected]";//ここに送信者Gmail IDを記入してください String receiver="[email protected]";//ここに受信者IDを記入してください m.sendMail(sender,receiver,"hi","welcome"); System.out.println("success"); } }
coreとJavaメール用にspring jarファイルをロードします mail.jarとactivation.jarをロードします applicationContext.xmlファイルでユーザー名とパスワード属性を変更し、自分のgmail IDとパスワードを指定します。 Test.javaファイルで送信者gmail IDとReceivermail IDを変更します。 Testクラスをコンパイルして実行します
自分のサイトがある場合、メールサーバーを使用できます。MailMail.javaとTestクラスは同じです。Test.javaファイルで送信者メールIDを変更する必要があります。applicationContext.xmlファイルでいくつかの変更が必要です。
applicationContext.xmlファイルで、以下を使用しています:
mail.unitedsquaad.comがホスト名です。変更してください。 [email protected]がユーザー名です。変更してください。 xxxxxがパスワードです。変更してください。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xmlns:p="http://www.springframework.org/schema/p xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="mail.unitedsquaad.com" /> <property name="username" value="[email protected]" /> <property name="password" value="xxxxx" /> </property> </props> <prop key="mail.smtp.auth">true</prop>/prop> </props> </property> </bean> <bean id="mailMail" class="MailMail"> <property name="mailSender" ref="mailSender" /> </bean> </beans>
您可以借助SimpleMailMessage类将邮件发送到多个收件人。 SimpleMailMessage类的 setTo(String []接收者)方法用于将消息发送到多个接收者。让我们看一下简单的代码。
.... public void sendMail(String from, String[] to, String subject, String msg) { //creating message SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to);//passing array of recipients message.setSubject(subject); message.setText(msg); //sending message mailSender.send(message); } ...
我们可以借助MimeMessagePreparator接口发送mime消息。它有一个方法prepare(MimeMessage message)。
让我们看一下发送mime消息的简单代码。
import javax.mail.Message; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessagePreparator; public class MailMail{ private JavaMailSender mailSender; public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } public void sendMail(final String from, final String to, final String subject, final String msg) { MimeMessagePreparator messagePreparator = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws Exception { mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); mimeMessage.setFrom(new InternetAddress(from)); mimeMessage.setSubject(subject); mimeMessage.setText(msg); } }; mailSender.send(messagePreparator); } }
applicationContext.xmlとTest.javaファイルは上記のものと同じです。
MimeMessageHelperクラスの助けを借りて、Springで添付付きのMIMEメッセージを送信できます。MimeMessagePreparatorの使用が推奨されます。
添付(画像)付きのMIMEメッセージを送信する簡単なコードを見てみましょう。
import java.io.File; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; public class MailMail{ private JavaMailSender mailSender; public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } public void sendMail(final String from, final String to, final String subject, final String msg) { try{ MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(msg); // ファイルを付属 FileSystemResource file = new FileSystemResource(new File("c:",/rr.jpg")); helper.addAttachment("mybrothermage.jpg", file);//この名前で画像が送信されます mailSender.send(message); catch(MessagingException e){e.printStackTrace();} } }
applicationContext.xmlとTest.javaファイルは上記のものと同じです。