raymond.chen 发表于 2013-1-27 05:03:38

用JavaMail的API发送邮件

1、MimeMessage的包装类
public class SimpleMessageWraper {private Session session;private MimeMessage mimeMessage;private Multipart multipart = new MimeMultipart();;public Session getSession() {return session;}public MimeMessage getMimeMessage() {return mimeMessage;}private String arrayToString(String[] array){String s = "";if(array != null && array.length > 0){for(int i=0;i<array.length;i++){if(s == ""){s = array.trim();}else{s += "," + array.trim();}}}return s;}public SimpleMessageWraper(Properties props){      session = Session.getInstance(props);      session.setDebug(false);      mimeMessage = new MimeMessage(session);}public void setFrom(String from)throws MessagingException{mimeMessage.setFrom(new InternetAddress(from));      mimeMessage.saveChanges();}public void setTo(String[] toArray)throws MessagingException{String s = arrayToString(toArray);Address[] addresses = InternetAddress.parse(s);mimeMessage.setRecipients(Message.RecipientType.TO, addresses);      mimeMessage.saveChanges();}public void setCc(String[] ccArray)throws MessagingException{String s = arrayToString(ccArray);Address[] addresses = InternetAddress.parse(s);mimeMessage.setRecipients(Message.RecipientType.CC, addresses);      mimeMessage.saveChanges();}public void setSubject(String subject)throws MessagingException{mimeMessage.setSubject(subject);      mimeMessage.saveChanges();}public void setSentDate(Date date)throws MessagingException{mimeMessage.setSentDate(date);      mimeMessage.saveChanges();}    public void setText(String text)throws MessagingException{    MimeBodyPart mimeBodyPart = new MimeBodyPart();   mimeBodyPart.setText(text);    multipart.addBodyPart(mimeBodyPart);    mimeMessage.setContent(multipart);      mimeMessage.saveChanges();    }      public void addAttactment(File file)throws MessagingException,UnsupportedEncodingException{    if(file == null) return;      MimeBodyPart mimeBodyPart = new MimeBodyPart();   mimeBodyPart.setFileName(MimeUtility.encodeText(file.getName(), "GBK", "B")); //对邮件头采用base64方式编码    mimeBodyPart.setDataHandler(new DataHandler(new FileDataSource(file)));   multipart.addBodyPart(mimeBodyPart);   mimeMessage.setContent(multipart);      mimeMessage.saveChanges();    }}

2、发送邮件的工具类
public class SimpleMailFactory {private static SimpleMailConfig simpleMailConfig = null;private static Properties props = null;static{    //取得包含邮件配置信息的bean对象simpleMailConfig = (SimpleMailConfig)SpringContextUtil.getBean(Constants.simpleMailConfigBeanName);props = new Properties();      props.put("mail.smtp.host", simpleMailConfig.getHost());      props.put("mail.smtp.auth", simpleMailConfig.getAuth());}/** * 功能:取得邮件消息对象的包装器 */public static SimpleMessageWraper getSimpleMessageWraper(){return new SimpleMessageWraper(props);}/** * 功能:邮件发送 */public static void send(SimpleMessageWraper messageWraper)throws Exception{MimeMessage mimeMessage = messageWraper.getMimeMessage();      Transport transport = messageWraper.getSession().getTransport(simpleMailConfig.getTransport());                transport.connect(simpleMailConfig.getHost(), simpleMailConfig.getUsername(), simpleMailConfig.getPassword());      transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());      transport.close();      }}

3、包含邮件配置信息的bean对象
<bean id="simpleMailConfig" class="com.cjm.common.mail.SimpleMailConfig"><property name="host" value="smtp.163.com"/><property name="username" value="uid"/><property name="password" value="pwd"/><property name="auth" value="true"/></bean>

4、实例代码
SimpleMessageWraper w1 = SimpleMailFactory.getSimpleMessageWraper();w1.setFrom("ServerMailAddress@163.com");w1.setTo(new String[]{"TargetAddress@139.com"});w1.setSubject("标题");w1.setText("邮件内容");w1.addAttactment(new File("c:\\附件.txt"));SimpleMailFactory.send(w1);
页: [1]
查看完整版本: 用JavaMail的API发送邮件