Springを使用しているため、組み込みの電子メールサポートを使用して電子メールを送信できます。したがって、ディスクやその他の場所からファイルをどのように取得するかは問題ではありません。MimeMessageHelperを使用して添付ファイル付きの電子メールを送信し、次のように認証用のメールホストのアカウントのユーザー名とパスワードを指定できます。
public class EmailNotifier {
private JavaMailSenderImpl mailSender;
public void setMailSender(JavaMailSenderImpl mailSender) {
this.mailSender = mailSender;
}
public void sendMail(InternetAddress fromAddress, InternetAddress toAddress, String subject, String msg) {
MimeMessage message = mailSender.createMimeMessage();
try {
// use the true flag to indicate you need a multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(fromAddress);
helper.setTo(toAddress);
helper.setSubject(subject);
helper.setText(msg);
// let's attach the infamous windows Sample file (this time copied to c:/)
FileSystemResource file = new FileSystemResource(new File("c:/test.xls"));
helper.addAttachment("test.xls", file);
mailSender.send(message);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Bean構成ファイルでJavaMailSenderImplBeanを構成します。これは、Gmail経由でメールを送信するためのものです。
Beans.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com" />
<property name="port" value="587" />
<property name="username" value="adminxxxx" />
<property name="password" value="password" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
</props>
</property>
</bean>
<bean id="emailNotifier" class="com.examples.EmailNotifier">
<property name="mailSender" ref="mailSender" />
</bean>
</beans>
これはテスト用です。
public class MailApp {
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext("beans.xml");
EmailNotifier emailNotifier = (EmailNotifier) context.getBean("emailNotifier");
try {
emailNotifier.sendMail(new InternetAddress("adminxxxx@gmail.com"),
new InternetAddress("recipientxxxx@gmail.com"),
"Email Alert!",
"Hello User, This is a test email \n No response required.");
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Springドキュメント