发送电子邮件 java mail
请看下面文章。
spring3.0发送电子邮件(velocity模板,带附件,群发,解决乱码)最终版:
Spring Mail :
项目中代码:
apache mail:
package com.dfyl.util;
/**
* Created by IntelliJ IDEA.
* User: timchao
* Date: 11/9/27
* Time: 下午2:37
* To change this template use File | Settings | File Templates.
*/
import org.apache.commons.mail.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException;
import java.util.Properties;
public class SendMail {
public String smtpHostName = "smtp.qiye.163.com";//"smtp.gmail.com";
public String authserName = "[DMS]iMove server";
public String authuser = "[email protected]";
public String authpwd = "iMpwd2011";
public int smtpPort = 25;
public String sslsmtpPort = "465";
public String Charset = "UTF-8";
public String subject = "iTest";
public String message = "iTest!!";
public String sendToName = "Dear Engineer";
public String sendTo = "[email protected]";
public boolean debug = false;
public boolean ssl = false;
/**
* Send Mail
*/
public void Send() {
final Log log = LogFactory.getLog(SendMail.class);
Properties property = new Properties();
try {
property.load(SendMail.class.getResourceAsStream("/mail.properties"));
smtpHostName = property.getProperty("smtpHostName").trim();
authserName = property.getProperty("authserName").trim();
authuser = property.getProperty("authuser").trim();
authpwd = property.getProperty("authpwd").trim();
smtpPort = Integer.parseInt(property.getProperty("smtpPort").trim());
sslsmtpPort = property.getProperty("sslsmtpPort").trim();
Charset = property.getProperty("Charset").trim();
sendTo = property.getProperty("sendTo").trim();
debug = Boolean.parseBoolean(property.getProperty("debug").trim());
ssl = Boolean.parseBoolean(property.getProperty("ssl").trim());
} catch (IOException e) {
//e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
Email email = new HtmlEmail();
email.setHostName(smtpHostName);
email.setAuthenticator(new DefaultAuthenticator(authuser, authpwd));
email.setDebug(debug);
if (ssl) {
email.setSSL(ssl);
email.setSslSmtpPort(sslsmtpPort);
} else {
email.setSmtpPort(smtpPort);
}
email.setCharset(Charset);
email.setSubject(subject);
try {
email.setFrom(authuser, authserName);
email.setMsg(message);
email.addTo(sendTo, sendToName);
email.send();
} catch (EmailException ee) {
//ee.printStackTrace();
}
}
}
spring mail:
package com.dfyl.util;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import freemarker.template.SimpleHash;
import freemarker.template.TemplateException;
public class SendMail {
/**
* @author xblang
* 发送普通文本的邮件
* @param sentTO
* @param from
* @param subject
* @param content
* @param username
* @param password
*/
public static void sendTextMail(String[] sentTO,String from,String subject,String content,String username,String password) {
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
// 设定mail server
senderImpl.setHost( "smtp.qiye.163.com" );
// 建立邮件消息
SimpleMailMessage mailMessage = new SimpleMailMessage();
// 设置收件人,寄件人 用数组发送多个邮件
// String[] array = new String[] {"[email protected]","[email protected]"};
// mailMessage.setTo(array);
mailMessage.setTo(sentTO);
mailMessage.setFrom(from);
mailMessage.setSubject(subject);
mailMessage.setText(content);
senderImpl.setUsername(username); // 根据自己的情况,设置username
senderImpl.setPassword(password); // 根据自己的情况, 设置password
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth","true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
// prop.put("mail.smtp.timeout","25000");
senderImpl.setJavaMailProperties(prop);
// 发送邮件
senderImpl.send(mailMessage);
System.out.println( " 邮件发送成功.. " );
}
/**
* @author xblang
* 发送Html文本的邮件
* @param sentTO 字符串数组,为收邮件的邮箱地址
* @param from 发件人地址
* @param subject 邮件主题
* @param content 邮件内容
* @param username 发件人用户名
* @param password 发件人密码
* @throws MessagingException
*/
public static void sendHtmlMail(String templet,String[] sentTO,String from,String subject,List errorList,String username,String password) throws MessagingException{
FreemarkGenerator fm = new FreemarkGenerator();
SimpleHash aMap = new SimpleHash();
aMap.put("errorList", errorList);
aMap.put("error_size", errorList.size());
String content = "";
try {
System.out.println(fm.createString(templet, aMap));
content = fm.createString(templet, aMap);
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
//设定mail server
try {
senderImpl.setHost(PropertyUtil.getMailValue("smtpHostName"));
} catch (BaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//建立邮件消息,发送简单邮件和html邮件的区别
MimeMessage mailMessage = senderImpl.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8");
//设置收件人,寄件人
messageHelper.setTo(sentTO);
messageHelper.setFrom(from);
messageHelper.setSubject(subject);
//true 表示启动HTML格式的邮件
messageHelper.setText(content,true);
senderImpl.setUsername(username) ; // 根据自己的情况,设置username
senderImpl.setPassword(password) ; // 根据自己的情况, 设置password
Properties prop = new Properties() ;
prop.put("mail.smtp.auth", "true") ; // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
// prop.put("mail.smtp.timeout", "25000") ;
senderImpl.setJavaMailProperties(prop);
//发送邮件
senderImpl.send(mailMessage);
System.out.println("邮件发送成功..");
}
/**
* @author xblang
* 发送Html文本的邮件
* @param sentTO 字符串数组,为收邮件的邮箱地址
* @param from 发件人地址
* @param subject 邮件主题
* @param content 邮件内容
* @param username 发件人用户名
* @param password 发件人密码
* @throws MessagingException
*/
public static void sendHtmlMail(String templet , String subject, SimpleHash aMap,String username,String password) throws MessagingException{
FreemarkGenerator fm = new FreemarkGenerator();
String sentTo_DFYL = null;
try {
sentTo_DFYL = PropertyUtil.getMailValue("sendTo");
} catch (BaseException e1) {
e1.printStackTrace();
}
String[] sentTO = {sentTo_DFYL};
String content = "";
try {
content = fm.createString(templet, aMap);
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
//设定mail server
try {
senderImpl.setHost(PropertyUtil.getMailValue("smtpHostName"));
} catch (BaseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//建立邮件消息,发送简单邮件和html邮件的区别
MimeMessage mailMessage = senderImpl.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8");
//设置收件人,寄件人
messageHelper.setTo(sentTO);
try {
messageHelper.setFrom(PropertyUtil.getMailValue("authuser"));
} catch (BaseException e) {
e.printStackTrace();
}
messageHelper.setSubject(subject);
//true 表示启动HTML格式的邮件
messageHelper.setText(content,true);
senderImpl.setUsername(username) ; // 根据自己的情况,设置username
senderImpl.setPassword(password) ; // 根据自己的情况, 设置password
Properties prop = new Properties() ;
prop.put("mail.smtp.auth", "true") ; // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
// prop.put("mail.smtp.timeout", "25000") ;
senderImpl.setJavaMailProperties(prop);
//发送邮件
senderImpl.send(mailMessage);
System.out.println("邮件发送成功..");
}
}