Java言語Springでメール送信

1.propertiesファイル
#サーバーのメールアカウント情報を設定
#サーバー
mail.smtp.host=smtp.xxx.com
#パスワード認証を確認
mail.smtp.auth=true
#タイムアウト
mail.smtp.timeout=25000
#送信者のメール
mail.smtp.from=xxx@arkgame.com
#ユーザ名
mail.smtp.username=xxx@arkgame.com
#パスワード
mail.smtp.password=startnews24

2.applicationContext.xml を設定

<!– in-memory database and a datasource –>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:jdbc.properties" />
<!– senderbeanを設定 –>
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.smtp.host}"></property>
<property name="javaMailProperties" >
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
<property name="username" value="${mail.smtp.username}"></property>
<property name="password" value="${mail.smtp.password}"></property>
</bean>

 

3.Action処理コード、メール送信機能、添付ファイルを追加
public class ForcastAction extends ActionSupport implements ServletRequestAware, ServletResponseAware, SessionAware {
private static final long serialVersionUID = 1L;
private HttpServletRequest request;
private HttpServletResponse response;
// struts mapsession ,key value
private Map<String, Object> session;

// メール送信
private JavaMailSenderImpl mailSender;
// ファイルをアップロードパス
private static final String FOLDER_NAME = “/upload/";

// アップロード添付ファイルや添付ファイル名
private File[] attachment;
private String[] attachmentFileName;
public void sendEmail() {
// メールPOJOオブジェクト
MailPojo mailPojo = new MailPojo();
MimeMessage m = mailSender.createMimeMessage();

// 添付ファイルの構成
String path = “jsp/theme/analyser/hero.html";
path = request.getSession().getServletContext().getRealPath(“/") + path;
attachment = new File[1];
attachment[0] = new File(path);
attachmentFileName = new String[1];
attachmentFileName[0] = “hero.html";
try {
MimeMessageHelper helper = new MimeMessageHelper(m, true, “UTF-8");
// 受信メール
helper.setTo(“xxx@arkgame.com");
// 転送設定
// helper.setCc(“");
// 送信者の設定
helper.setFrom(“xxx@arkgame.com");
// Bccの設定
// helper.setBcc(“");
// タイトルの設定
helper.setSubject(“テストメール");
// HTML内容の設定
helper.setText(“これはテストメールです!もし届いたら送信成功ということです!");

//添付ファイルを保存
attachment = saveFiles(attachment, attachmentFileName);
for (int i = 0; attachment != null && i < attachment.length; i++) {
File file = attachment[i];
FileSystemResource resource = new FileSystemResource(file);
helper.addAttachment(attachmentFileName[i], resource);

// mailオブジェクト
AttachmentPojo attachmentPojo = new AttachmentPojo();
attachmentPojo.setFilename(attachmentFileName[i]);
attachmentPojo.setFilepath(file.getAbsolutePath());
mailPojo.getAttachmentPojos().add(attachmentPojo);
}

// メール送信とメール永続クラス状態の設定
mailSender.send(m);
mailPojo.setSent(true);
System.out.println(“メール送信成功!");

} catch (Exception e) {
e.printStackTrace();
mailPojo.setSent(false);
// TODO: handle exception
}
// dao.create(mail) 永続化
}

/**
*
* @param files
* @param names
* @return
*/
public File[] saveFiles(File[] files, String[] names) {
if (files == null)
return null;
File root = new File(ServletActionContext.getServletContext().getRealPath(FOLDER_NAME));
File[] destinies = new File[files.length];
for (int i = 0; i < files.length; i++) {
File file = files[i];
File destiny = new File(root, names[i]);
destinies[i] = destiny;
copyFile(file, destiny);
}
return destinies;
}

/**
* 単独ファイルをコピー
*
* @param from
* @param to
*/
public void copyFile(File from, File to) {
InputStream ins = null;
OutputStream ous = null;
try {
// すべての上級フォルダを作成
to.getParentFile().mkdirs();
ins = new FileInputStream(from);
ous = new FileOutputStream(to);
byte[] b = new byte[1024];
int len;
while ((len = ins.read(b)) != -1) {
ous.write(b, 0, len);
}
} catch (Exception e) {
// TODO: handle exception
} finally {
if (ous != null)
try {
ous.close();
} catch (Exception e) {
e.printStackTrace();
}
if (ins != null)
try {
ins.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

public void setServletResponse(HttpServletResponse httpservletresponse) {
this.response = httpservletresponse;
}

public void setServletRequest(HttpServletRequest httpservletrequest) {
this.request = httpservletrequest;
}

public void setSession(Map<String, Object> session) {
this.session = session;
}

public JavaMailSenderImpl getMailSender() {
return mailSender;
}

public void setMailSender(JavaMailSenderImpl mailSender) {
this.mailSender = mailSender;
}

public File[] getAttachment() {
return attachment;
}

public void setAttachment(File[] attachment) {
this.attachment = attachment;
}

public String[] getAttachmentFileName() {
return attachmentFileName;
}

public void setAttachmentFileName(String[] attachmentFileName) {
this.attachmentFileName = attachmentFileName;
}

}

Source

Posted by arkgame