📄 sendmail.java
字号:
import java.security.Security;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class SendMail {
private static Log log = LogFactory.getLog(SendMail.class);
private MimeMessage mimeMsg;
private Session session;
private Properties props;
//private boolean needAuth = false;
private String username = "myname";
private String password = "mypwd";
private String smtp = "smtp.gmail.com";
private Multipart mp;
public SendMail() {
}
public void init(String smtp) {
this.username = username ;
this.password = password ;
this.smtp = smtp ;
setSmtpHost(smtp);
createMimeMessage();
}
/**
* @param hostName
* String
*/
public void setSmtpHost(String hostName) {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
if (props == null)
props = System.getProperties();
props.setProperty("mail.smtp.host", hostName);
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback", "true");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
//props.put("mail.smtp.host", hostName);
}
/**
* @return boolean
*/
public boolean createMimeMessage() {
session = null;
try {
session = Session.getDefaultInstance(props,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
} catch (Exception e) {
return false;
}
if(session==null)
return false;
try {
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart();
return true;
} catch (Exception e) {
return false;
}
}
/**
* @param need
* boolean
*/
public void setNeedAuth(boolean need) {
if (props == null){
System.out.println("need auth");
props = System.getProperties();
props.setProperty("mail.smtp.host", smtp);
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");
// if (need) {
// props.put("mail.smtp.auth", "true");
// } else {
// props.put("mail.smtp.auth", "false");
// }
}
/**
* @param name
* String
* @param pass
* String
*/
public void setNamePass(String name, String pass) {
username = name;
password = pass;
}
public void setName(String name) {
int idx = name.indexOf("@");
if(idx<0)username = name;
else username = name.substring(0,idx);
}
/**
* @param mailSubject
* String
* @return boolean
*/
public boolean setSubject(String mailSubject) {
try {
mimeMsg.setSubject(mailSubject, "GB2312");
return true;
} catch (Exception e) {
return false;
}
}
public boolean setSubject(String mailSubject, String encoding) {
try {
mimeMsg.setSubject(mailSubject, encoding);
return true;
} catch (Exception e) {
return false;
}
}
/**
* @param mailBody
* String
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(mailBody, "text/html;charset=GBK");
mp.addBodyPart(bp);
return true;
} catch (Exception e) {
return false;
}
}
/**
* @param mailBody
* String
*/
public boolean setBody(String mailBody, String encoding) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(mailBody, "text/html;charset=" + encoding);
mp.addBodyPart(bp);
return true;
} catch (Exception e) {
return false;
}
}
/**
* @param name
* String
* @param pass
* String
*/
public boolean addFileAffix(String 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) {
return false;
}
}
/**
* @param name
* String
* @param pass
* String
*/
public boolean setFrom(String from, String fromName) {
try {
mimeMsg.setFrom(new InternetAddress(from, fromName));
return true;
} catch (Exception e) {
return false;
}
}
/**
* @param name
* String
* @param pass
* String
*/
public boolean setTo(String to) {
if (to == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
.parse(to));
return true;
} catch (Exception e) {
return false;
}
}
/**
* @param name
* String
* @param pass
* String
*/
public boolean setCopyTo(String copyto) {
if (copyto == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copyto));
return true;
} catch (Exception e) {
return false;
}
}
/**
* @param name
* String
* @param pass
* String
*/
public boolean sendout() {
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String) props.get("mail.smtp.host"), username + "@gmail.com",
password);
transport.sendMessage(mimeMsg, mimeMsg
.getRecipients(Message.RecipientType.TO));
transport.close();
return true;
} catch (Exception e) {
log.error(e.getMessage());
return false;
}
}
public static boolean sendMail(String setTo, String setFrom, String setFromName,
String subject, String mailBody) throws Exception {
SendMail sendMail = new SendMail();
sendMail.init(sendMail.smtp);
sendMail.setNeedAuth(false);
sendMail.setSubject(subject);
sendMail.setBody(mailBody);
sendMail.setTo(setTo);
sendMail.setFrom(setFrom, setFromName);
sendMail.setName(setFrom);
if (sendMail.sendout() == false) {
sendMail = null;
log.error("failed sendout to " + setTo + " by " + setFrom);
return false;
}
else {
log.info("secceed sendout to " + setTo + " by " + setFrom);
sendMail = null;
return true;
}
}
public static boolean sendMail(String setTo, String setFrom, String setFromName,
String subject, String mailBody, String encoding)
throws Exception {
SendMail sendMail = new SendMail();
sendMail.init(sendMail.smtp);
sendMail.setNeedAuth(false);
sendMail.setSubject(subject, encoding);
sendMail.setBody(mailBody, encoding);
sendMail.setTo(setTo);
sendMail.setFrom(setFrom, setFromName);
sendMail.setName(setFrom);
if (sendMail.sendout() == false) {
sendMail = null;
log.error("failed sendout to " + setTo + " by " + setFrom);
return false;
}
else {
log.info("secceed sendout to " + setTo + " by " + setFrom);
sendMail = null;
return true;
}
}
/**
* Just do it as this
* @throws Exception
*/
public static void main(String[] args) throws Exception {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -