メール送信ロジックのメモ

package xxxx.service.mail;

import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeBodyPart;

public class SendInfoMail {
	public String send(
			String fromAddress,
			String fromName,
			String toAddress,
			String ccAddress,
			String bccAddress,
			String infoTitle,
			String infoText,
			String filePath,
			String fileName
	) throws Exception {
		Properties objPrp = new Properties();
		objPrp.put("mail.smtp.host","SMTPサーバ名");
		Session session = Session.getDefaultInstance(objPrp, null);
		MimeMessage mimeMessage = new MimeMessage(session);
		
		// 送信元メールアドレスと文字コードを指定(送信者名はNULL)
		if (!Util.isEmpty(fromAddress)) {
			mimeMessage.setFrom(new InternetAddress(fromAddress, fromName,
					("iso-2022-jp")));
		}

		// 送信先(TO)メールアドレスを指定
		if (!Util.isEmpty(toAddress)) {
			mimeMessage.setRecipients(Message.RecipientType.TO,
					toAddress);
		}

		// 送信先(CC)メールアドレスを指定
		if (!Util.isEmpty(ccAddress)) {
			mimeMessage.setRecipients(Message.RecipientType.CC,
					ccAddress);
		}

		// 送信先(BCC)メールアドレスを指定
		if (!Util.isEmpty(bccAddress)) {
			mimeMessage.setRecipients(Message.RecipientType.BCC,
					bccAddress);
		}

		// メールのタイトルを指定
		if (!Util.isEmpty(infoTitle)) {
			mimeMessage.setSubject(infoTitle, "iso-2022-jp");
		}

		// 送信日付を指定
		mimeMessage.setSentDate(new Date());

		MimeMultipart multipart = new MimeMultipart();
		
		MimeBodyPart bodyText = new MimeBodyPart();
		
		if (Util.isEmpty(infoText)){
			bodyText.setText("本文なし", "iso-2022-jp");
		}
		else{
			bodyText.setText(infoText, "iso-2022-jp");
		}
		multipart.addBodyPart(bodyText);
		if (!Util.isEmpty(filePath)){
			MimeBodyPart bodyAtt = new MimeBodyPart();
			DataSource dataSource = new FileDataSource(filePath);	
			DataHandler dataHandler = new DataHandler(dataSource);
			bodyAtt.setDataHandler(dataHandler);
			if (Util.isEmpty(fileName)){
				bodyAtt.setFileName("attached file");
			}
			else{
				bodyAtt.setFileName(fileName);
			}
			multipart.addBodyPart(bodyAtt);
		}
		
		mimeMessage.setContent(multipart);

		// 送信
		Transport.send(mimeMessage);

		return null;
	}

}