Javaはメール送信機能を実現
まずactivation.jarをインポートする必要があります javax.mail.jar 2つのjarパッケージ
Mailクラスをカスタマイズしてメールの基本コンテンツの設定と送信機能を実現
メールの送信方法:
Mailクラスをカスタマイズしてメールの基本コンテンツの設定と送信機能を実現
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
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 Mail {
private MimeMessage mimeMsg; // MIME
private Session session; //
private Properties props; //
private boolean needAuth = false; // smtp
private String username = ""; // smtp
private String password = "";
private Multipart mp; // Multipart , , , //MimeMessage
public Mail(String smtp) {
setSmtpHost(smtp);
createMimeMessage();
}
public void setSmtpHost(String hostName) {
System.out.println(" :mail.smtp.host = " + hostName);
if (props == null)
props = System.getProperties(); //
props.put("mail.smtp.host", hostName); // SMTP
}
public boolean createMimeMessage() {
try {
System.out.println(" !");
session = Session.getDefaultInstance(props, null); //
} catch (Exception e) {
System.err.println(" !" + e);
return false;
}
System.out.println(" MIME !");
try {
mimeMsg = new MimeMessage(session); // MIME
mp = new MimeMultipart(); // mp multipart
// Multipart is a container that holds multiple body parts.
return true;
} catch (Exception e) {
System.err.println(" MIME !" + e);
return false;
}
}
public void setNeedAuth(boolean need) {
needAuth = need;
System.out.println(" smtp :mail.smtp.auth = " + need);
if (props == null)
props = System.getProperties();
if (needAuth) {
props.put("mail.smtp.auth", "true");
} else {
props.put("mail.smtp.auth", "false");
}
}
public void setNamePass(String name, String pass) {
System.out.println(" ");
username = name;
password = pass;
}
public boolean setSubject(String mailSubject) {
System.out.println(" !");
try {
mimeMsg.setSubject(mailSubject);
return true;
} catch (Exception e) {
System.err.println(" !");
return false;
}
}
public boolean setBody(String mailBody) {
try {
System.out.println(" ");
BodyPart bp = new MimeBodyPart();
bp.setContent(
"<meta http-equiv=Content-Type content=text/html; charset=gb2312>"
+ mailBody, "text/html;charset=GB2312");
mp.addBodyPart(bp);
return true;
} catch (Exception e) {
System.err.println(" !" + e);
return false;
}
}
public boolean addFileAffix(String filename) {
System.out.println(" :" + filename);
try {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
return true;
} catch (Exception e) {
System.err.println(" :" + filename + " !" + e);
return false;
}
}
public boolean setFile(Object o, String type) {
try {
mimeMsg.setContent(o, type);
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
return true;
}
public boolean setFrom(String from) {
System.out.println(" !");
try {
mimeMsg.setFrom(new InternetAddress(from)); //
return true;
} catch (Exception e) {
return false;
}
}
public boolean setTo(String to) {
System.out.println(" ");
if (to == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
return true;
} catch (Exception e) {
return false;
}
}
public boolean setCopyTo(String copyto) {
System.out.println(" ");
if (copyto == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copyto));
return true;
} catch (Exception e) {
return false;
}
}
public boolean sendout() {
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println(" ....");
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp"); // ???
transport.connect((String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.TO));
// transport.send(mimeMsg);
System.out.println(" !");
transport.close();
return true;
} catch (Exception e) {
System.err.println(" !" + e);
return false;
}
}
}
メールの送信方法:
public static int sendEmail(String subject, String mailBody,
String attachmentDir, String smtpString, boolean needAuth,
String to, String from, String password, Object file, String type) {
int result = 0;
Mail mMail = new Mail(smtpString);
mMail.setNeedAuth(needAuth);
mMail.setNamePass(from, password);
if (subject == null) {
subject = "Test Result";
}
if (!mMail.setSubject(subject)) {
return -1;
}
if (!mMail.setBody(mailBody)) {
return -2;
}
if (!mMail.setTo(to)) {
return -3;
}
if (!mMail.setFrom(from)) {
return -4;
}
if (attachmentDir != null) {
if (!mMail.addFileAffix(attachmentDir)) {
return -5;
}
}
if (file != null && type != null) {
if (!mMail.setFile(file, type)) {
return -7;
}
}
if (!mMail.sendout()) {
return -6;
}
return result;
}