六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 48|回复: 0

用JavaMail的API发送邮件

[复制链接]

升级  54%

33

主题

33

主题

33

主题

秀才

Rank: 2

积分
131
 楼主| 发表于 2013-1-27 05:03:38 | 显示全部楼层 |阅读模式
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[i].trim();}else{s += "," + array[i].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);
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表