2.發(fā)送郵件的核心jia包:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
3.配置文件config.properties,代碼如下:
#############Email Server Config#################
EMAIL.EMAIL_HOST=smtp.163.com
EMAIL.TRANSPORT_PROTOCOL=smtp
EMAIL.SMTP_AUTH=true
EMAIL.EMAIL_FROM=www@163.COM
EMAIL.EMAIL_USER=wwww
EMAIL.EMAIL_PWD=123456
#############Email Server Config#################
######### email #########
esb.email=xxxxxx@qq.com;aaaaaaa@qq.com
4.讀取配置文件類:Config.java:
public class Config
{
public static ThreadPoolExecutor SendPoolExecutor = new ThreadPoolExecutor(10, 50, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
private static Properties properties = PropertiesUtil.getProperties("properties/config.properties");
private static String emailHost;
private static String emailFrom;
private static String emailUser;
private static String emailPwd;
private static String smtpAuth;
private static String transportProtocol;
static{
emailHost=properties.getProperty("EMAIL.EMAIL_HOST");
emailFrom=properties.getProperty("EMAIL.EMAIL_FROM");
emailUser=properties.getProperty("EMAIL.EMAIL_USER");
emailPwd=properties.getProperty("EMAIL.EMAIL_PWD");
smtpAuth=properties.getProperty("EMAIL.TRANSPORT_PROTOCOL");
transportProtocolproperties.getProperty("EMAIL.SMTP_AUTH");
}
public static Properties getProperties()
{
return properties;
}
.......
}
5.創(chuàng)建郵件配置發(fā)送類:MailUtil
public class MailUtil
{
private static Logger logger = Logger.getLogger(MailUtil.class);
public static void sendEamil(List<InternetAddress> addresses, List<InternetAddress> ccAddresses, String topic, String context)
{
try
{
Properties props = System.getProperties();
props.put("mail.smtp.host", Config.getEmailHost());
props.put("mail.smtp.auth", Config.getSmtpAuth);
Multipart multipart = new MimeMultipart();
MimeBodyPart bodyPart = new MimeBodyPart();
String contentType = "text/html; charset=UTF-8";
multipart.addBodyPart(bodyPart);
Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(MsgConfig.getEmailFrom()));
InternetAddress[] addArray = (InternetAddress[]) addresses.toArray(new InternetAddress[0]);
message.addRecipients(Message.RecipientType.TO, addArray);
if ( null!=ccAddresses&& ccAddresses.size() > 0)
{
message.setRecipients(Message.RecipientType.CC, ccAddresses.toArray(new InternetAddress[0])); // 抄送人
}
message.setSubject(topic,"UTF-8");
bodyPart.setContent(context , contentType);
message.setContent(multipart);
Transport transport = session.getTransport("smtp");
transport.connect(MsgConfig.getEmailHost(), MsgConfig.getEmailUser(), MsgConfig.getEmailPwd());
transport.sendMessage(message, message.getAllRecipients());
transport.close();
logger.info("sendEmail is succeed.");
}
catch (Exception e)
{
logger.info("sendEmail is error.", e);
throw new EmailException(e.getMessage(), e);
}
}
public static void main(String[] args) {
try {
List<InternetAddress> addresses=new ArrayList<InternetAddress>();
InternetAddress addresses1=new InternetAddress("xxxxx@163.com");
addresses.add(addresses1);
MailUtil.sendEamil(addresses, null, "內(nèi)容", "呢絨");
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
6.創(chuàng)建一個(gè)新的進(jìn)程去發(fā)送郵件:SendEmailNewThread
public class SendEmailNewThread implements Runnable {
private static Logger logger = Logger.getLogger(SendEmailNewThread.class);
private List<InternetAddress> emailList;
private Map<String,String> message;
public SendEmailNewThread(List<InternetAddress> emailList, Map<String,String> message) {
this.emailList = emailList;
this.message = message;
}
@Override
public void run() {
String topic = message.get("topic");
String context = message.get("context");
if(emailList.size()>0){
MailUtil.sendEamil(emailList, null, topic, context);
logger.info("send email to:"+emailList+" success!");
}
}
}
7.調(diào)用測(cè)試:Test
public static void main(String[] args){
String email = Config.getEmail();
String[] emails = email.split(CommonConstant.SPLIT);
List<InternetAddress> emailList = new ArrayList<InternetAddress>();
Map<String, String> message = new HashMap<String, String>();
message.put("topic", "xxx提醒");
message.put("context", "已xxxxx"+itemgroupout+",請(qǐng)相關(guān)人員在srm系統(tǒng)維護(hù)數(shù)據(jù)和權(quán)限。");
for(int i=0; i<emails.length; i++){
InternetAddress indr = new InternetAddress(emails[i]);
emailList.add(indr);
}
Config.SendPoolExecutor.execute(new SendEmailNewThread(emailList, message));
}
完結(jié)。
簡潔版:
package cyh.util;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.log4j.Logger;
public class EmailUtil {
/**
* 發(fā)送郵件
* @param email
* @param code
* @return
*/
public static boolean sendEmail(String email, String code) {
Logger logger=Logger.getLogger(EmailUtil.class);
boolean result=false;
Properties pop = new Properties();
pop.setProperty("mail.debug", "true");
pop.setProperty("mail.smtp.auth", "true");
pop.setProperty("mail.host", "smtp.163.com");
pop.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(pop);
Message msg = new MimeMessage(session);
try {
msg.setSubject("Traveling Man Mailbox verification");
msg.setText(setMessage(email,code));
msg.setFrom(new InternetAddress("redriverhong@163.com"));
Transport ts = session.getTransport();
ts.connect("redriverhong", "xxxxxx");
ts.sendMessage(msg, new Address[] { new InternetAddress(email) });
ts.close();
result=true;
logger.info("郵件發(fā)送成功!");
} catch (MessagingException e) {
e.printStackTrace();
result=false;
logger.error("郵件發(fā)送失敗。");
}
return result;
}
public static String setMessage(String email,String code) {
Date date = new Date();
StringBuffer sb = new StringBuffer();
sb.append("您好:").append("\n");
sb.append("感謝您注冊(cè)旅途人網(wǎng)站!你的注冊(cè)郵箱是:").append(email).append("\n");
sb.append("您注冊(cè)的驗(yàn)證碼是:").append(code).append("\n");
sb.append("該驗(yàn)證碼在20分鐘內(nèi)有效,20分鐘后需要重新注冊(cè)。").append("\n");
sb.append(date);
return sb.toString();
}
public static void main(String args[]) throws MessagingException {
sendEmail("redriverhong@163.com", "xxxxxx");
}
}
更多建議: