javamail

import java.util.Date;
import java.util.Properties;


import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;


import org.apache.log4j.Logger;


import com.sun.mail.smtp.SMTPMessage;


public class SendMail {


private static final Logger log = Logger.getLogger(SendMail.class);


private static final String HOST_NAME_PROPERTY = "mail.smtp.host";


private static final String HOST_NAME = "smtp.gmail.com";
private static final String username = "";
private static final String password = "";


private static final String PROTOCOL = "smtp";


private String from = "";
private String to = "";
private String cc = "";
private String bcc = "";
private String subject = "";
private String message = "";
private MimeMultipart multipart;


public static Properties props = null;


static {
props = System.getProperties();
props.put(HOST_NAME_PROPERTY, HOST_NAME);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.user", username);
props.put("mail.smtp.password", password);
props.setProperty("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
}


public SendMail() {
}


public boolean sendMail(String from, String to, String cc, String bcc,
String subject, String message) {


this.from = from;
this.to = to;
this.cc = cc;
this.bcc = bcc;
this.subject = subject;
this.message = message;


return sendMail();


}


public boolean sendHTMLMail(MimeMultipart multipart, String subject,
String from, String to) {
this.from = from;
this.to = to;
this.subject = subject;
this.multipart = multipart;


return sendHTMLMail();
}


public boolean send(String body, String subject, String from, String to,
String accountID, String accountPassword) {
this.message = body;
this.subject = subject;
this.from = from;
this.to = to;


return sendMail(accountID, accountPassword);
}


public boolean send(String body, String subject, String from, String to) {
this.message = body;
this.subject = subject;
this.from = from;
this.to = to;


return sendMail();
}

public boolean send(String body, String subject, String to) {
this.message = body;
this.subject = subject;
this.from = username;
this.to = to;


return sendMail();
}



public boolean sendAttachments(String body, String subject, String from,
String to, String[] filePaths) {
this.message = body;
this.subject = subject;
this.from = from;
this.to = to;


return sendAttach(filePaths);
}


private boolean sendMail(String accountID, String accountPassword) {
Session session = Session.getDefaultInstance(props, null);


URLName url = new URLName(PROTOCOL, HOST_NAME, -1, null, accountID,
accountPassword);
session.setPasswordAuthentication(url, new PasswordAuthentication(
accountID, accountPassword));


Message msg = new SMTPMessage(session);


try {


msg.setFrom(new InternetAddress(from));


msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
to, false));
msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(
cc, false));
msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(
bcc, false));


msg.setSubject(subject);
msg.setText(message);
msg.setSentDate(new Date());


// Transport.send(msg);
Transport smtpTransport = session.getTransport("smtp");
smtpTransport.connect(HOST_NAME, username, password);
smtpTransport.sendMessage(msg, msg.getAllRecipients());
smtpTransport.close();


return true;


} catch (MessagingException e) {
log.error(e);
return false;
}
}


private boolean sendMail() {
Session session = Session.getDefaultInstance(props, null);


URLName url = new URLName(PROTOCOL, HOST_NAME, -1, null, username,
password);
session.setPasswordAuthentication(url, new PasswordAuthentication(
username, password));


Message msg = new SMTPMessage(session);


try {


msg.setFrom(new InternetAddress(from));


msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
to, false));
msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(
cc, false));
msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(
bcc, false));


msg.setSubject(subject);
msg.setText(message);
msg.setSentDate(new Date());


// Transport.send(msg);
Transport smtpTransport = session.getTransport("smtp");
smtpTransport.connect(HOST_NAME, username, password);
smtpTransport.sendMessage(msg, msg.getAllRecipients());
smtpTransport.close();


return true;


} catch (MessagingException e) {
e.printStackTrace();
log.error(e);
return false;
}


}


private boolean sendHTMLMail() {
Session session = Session.getDefaultInstance(props, null);


URLName url = new URLName(PROTOCOL, HOST_NAME, -1, null, username,
password);
session.setPasswordAuthentication(url, new PasswordAuthentication(
username, password));


Message msg = new MimeMessage(session);


try {


msg.setFrom(new InternetAddress(from));


msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
to, false));
msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(
cc, false));
msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(
bcc, false));


msg.setSubject(subject);
msg.setContent(multipart);
msg.setSentDate(new Date());


// Transport.send(msg);
Transport smtpTransport = session.getTransport("smtp");
smtpTransport.connect(HOST_NAME, username, password);
smtpTransport.sendMessage(msg, msg.getAllRecipients());
smtpTransport.close();


return true;


} catch (MessagingException e) {
log.error(e);
return false;
}


}


private boolean sendAttach(String[] filePaths) {


// --- Password changed here and on the server. - AS:20041203.
String sUsername = username;
String sPassword = password;


Session session = Session.getDefaultInstance(props, null);


URLName url = new URLName(PROTOCOL, HOST_NAME, -1, null, sUsername,
sPassword);
session.setPasswordAuthentication(url, new PasswordAuthentication(
sUsername, sPassword));


// System.out.println( "User: " + url.getUsername() + ", Pass: " +
// url.getPassword() );


try {
// Define message
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, InternetAddress
.parse(to));


// String sTemp = msg.getRecipients( Message.RecipientType.TO
// )[0].toString();
// System.out.println( "Recip: " + sTemp );


msg.setRecipients(Message.RecipientType.CC, InternetAddress
.parse(cc)); // --- AS:20041126.
msg.setSubject(subject);


// create and fill the first message part
MimeBodyPart mbpMessage = new MimeBodyPart();
mbpMessage.setText(message);


// create the Multipart and add its parts to it
Multipart mp = new MimeMultipart(); // --- Moved up here -
// AS:20041126.
mp.addBodyPart(mbpMessage); // --- Moved up here - AS:20041126.


// attach files to the message
for (int i = 0; i < filePaths.length; i++) {


// System.out.println( "Processing attachment: " + filePaths[i]
// );


FileDataSource fds = new FileDataSource(filePaths[i]);


// create the second message part
MimeBodyPart mbpAttach = new MimeBodyPart(); // --- move inside
// the loop -
// AS:20041126.


mbpAttach.setDataHandler(new DataHandler(fds));
mbpAttach.setFileName(fds.getName());


mp.addBodyPart(mbpAttach);


// add the Multipart to the message
msg.setContent(mp);
}


// set the Date: header
msg.setSentDate(new Date());


// System.out.println( "About to call Transport..." );


// send the message
// Transport.send(msg);
Transport smtpTransport = session.getTransport("smtp");
smtpTransport.connect(HOST_NAME, username, password);
smtpTransport.sendMessage(msg, msg.getAllRecipients());
smtpTransport.close();


return true;


} catch (MessagingException e) {
e.printStackTrace();
log.error(e);
return false;
}
}


public void setFrom(String from) {
this.from = from;
}


public void setTo(String to) {
this.to = to;
}


public void setCc(String cc) {
this.cc = cc;
}


public void setBcc(String bcc) {
this.bcc = bcc;
}


public void setSubject(String subject) {
this.subject = subject;
}


public void setMessage(String message) {
this.message = message;
}

public static void main(String args[]) {
SendMail sendMail = new SendMail();


sendMail.send("", "", "",
"");


System.out.println("OK");
}


}

你可能感兴趣的:(javamail)