利用Java发送邮件(含附件)的例子

来源:互联网 发布:linux怎么安装eclipse 编辑:程序博客网 时间:2024/05/16 10:17

疯狂的IT人站长整理的:利用Java发送邮件(含附件)的例子:
1、邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面)

emailsmtp=smtp.qq.comemailaddress=459104018@qq.comemailpass=******



2、读取配置文件的类文件(ReadPropertity.java)

import java.io.IOException;import java.util.Properties;public class ReadPropertity {        static Properties props = new Properties();        static {                try {                        props.load(ReadPropertity.class.getClassLoader().getResourceAsStream(                                        "utils.properties"));                } catch (IOException e1) {                        e1.printStackTrace();                }        }        public static String getProperty(String key) {                return props.getProperty(key);        }}


 

3、邮件处理类(EmailHandle.java)

import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.Multipart;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 javax.mail.internet.MimeUtility;/**
* 本程序用java来实现Email的发送, 所用到的协议为:smtp* <p>Company:  疯狂的IT人</p>* time:2013-04-05* @author www.crazyiter.com* @date * @version 1.0 */public class EmailHandle {    private MimeMessage mimeMsg; //邮件对象    private Session session; //发送邮件的Session会话    private Properties props;//邮件发送时的一些配置信息的一个属性对象    private String sendUserName; //发件人的用户名    private String sendUserPass; //发件人密码    private Multipart mp;//附件添加的组件        private List files = new LinkedList();//存放附件文件    public EmailHandle(String smtp) {            sendUserName = "";            sendUserPass = "";        setSmtpHost(smtp);// 设置邮件服务器        createMimeMessage(); // 创建邮件    }    public void setSmtpHost(String hostName) {        if (props == null)            props = System.getProperties();        props.put("mail.smtp.host", hostName);    }    public boolean createMimeMessage(){        try {            // 用props对象来创建并初始化session对象            session = Session.getDefaultInstance(props, null);        } catch (Exception e) {            System.err.println("获取邮件会话对象时发生错误!" + e);            return false;        }        try {            mimeMsg = new MimeMessage(session);  // 用session对象来创建并初始化邮件对象            mp = new MimeMultipart();// 生成附件组件的实例        } catch (Exception e) {            return false;        }        return true;    }    /**         * 设置SMTP的身份认证         */    public void setNeedAuth(boolean need) {        if (props == null)            props = System.getProperties();        if (need)            props.put("mail.smtp.auth", "true");        else            props.put("mail.smtp.auth", "false");    }    /**         * 进行用户身份验证时,设置用户名和密码         */    public void setNamePass(String name, String pass) {        sendUserName = name;        sendUserPass = pass;    }    /**         * 设置邮件主题         * @param mailSubject         * @return         */    public boolean setSubject(String mailSubject) {        try {            mimeMsg.setSubject(mailSubject);        } catch (Exception e) {            return false;        }        return true;    }    /**         * 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8         * @param mailBody         * @return         */    public boolean setBody(String mailBody) {        try {            BodyPart bp = new MimeBodyPart();            bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"+ mailBody, "text/html;charset=UTF-8");            // 在组件上添加邮件文本            mp.addBodyPart(bp);             } catch (Exception e) {            System.err.println("设置邮件正文时发生错误!" + e);            return false;        }        return true;    }    /**         * 增加发送附件         * @param filename         * 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常         * @return         */    public boolean addFileAffix(String filename) {        try {            BodyPart bp = new MimeBodyPart();            FileDataSource fileds = new FileDataSource(filename);            bp.setDataHandler(new DataHandler(fileds));            bp.setFileName(MimeUtility.encodeText(fileds.getName(),"utf-8",null));  // 解决附件名称乱码            mp.addBodyPart(bp);// 添加附件            files.add(fileds);        } catch (Exception e) {            System.err.println("增加邮件附件:" + filename + "发生错误!" + e);           return false;        }        return true;   }   public boolean delFileAffix(){              try {                FileDataSource fileds = null;                for(Iterator it =  files.iterator() ;it.hasNext();) {                       fileds = (FileDataSource)it.next();                        if(fileds != null && fileds.getFile() != null){                               fileds.getFile().delete();                       }                }               }catch (Exception e) {             return false;          }        return true;    }    /**         * 设置发件人地址         * @param from         * 发件人地址         * @return         */    public boolean setFrom(String from) {        try {            mimeMsg.setFrom(new InternetAddress(from));        } catch (Exception e) {            return false;        }        return true;    }    /**         * 设置收件人地址         * @param to收件人的地址         * @return         */    public boolean setTo(String to) {        if (to == null)            return false;        try {            mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));        } catch (Exception e) {            return false;        }        return true;    }    /**         * 发送附件         * @param copyto         * @return         */    public boolean setCopyTo(String copyto) {        if (copyto == null)            return false;        try {            mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,InternetAddress.parse(copyto));        } catch (Exception e) {            return false;        }        return true;    }    /**         * 发送邮件         * @return         */    public boolean sendEmail() throws Exception{            mimeMsg.setContent(mp);            mimeMsg.saveChanges();            System.out.println("正在发送邮件....");            Session mailSession = Session.getInstance(props, null);            Transport transport = mailSession.getTransport("smtp");            // 连接邮件服务器并进行身份验证            transport.connect((String) props.get("mail.smtp.host"), sendUserName,sendUserPass);            // 发送邮件            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));            System.out.println("发送邮件成功!");            transport.close();        return true;    }}4、邮件发送的类文件(SendEmail.java)/*** 发送邮件测试* <p>Company:  疯狂的IT人</p>* time:2013-04-05* @author www.crazyiter.com* @date * @version 1.0 */public class SendEmail {        public SendEmail() {        }        /***以后需要两个参数:接收方地址 、 内容***/        public static void send(String subject, String toaddress,String content)throws Exception {                String hostName = ReadPropertity.getProperty("emailsmtp");                String fromAddress = ReadPropertity.getProperty("emailaddress");                String fromAPass = ReadPropertity.getProperty("emailpass");                EmailHandle emailHandle = new EmailHandle(hostName);                emailHandle.setFrom(fromAddress);                emailHandle.setNeedAuth(true);                emailHandle.setSubject(subject);                emailHandle.setBody(content);                emailHandle.setTo(toaddress);                emailHandle.setFrom(fromAddress);                emailHandle.addFileAffix("D:/myself/help/txt/java环境变量.txt");// 附件文件路径                emailHandle.setNamePass(fromAddress, fromAPass);                emailHandle.sendEmail();        }        public static void main(String[] args) {                try {        SendEmail.send("带附件的邮件测试","459104018@qq.com","测试内容<a href='http://www.crazyiter.com'>疯狂的IT人</a>");                } catch (Exception e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }        }}
 
 

5、发送邮件需要的jar包:activation.jarmail-plugin.jarmail.jar

 

本文转载自疯狂的IT人:http://www.crazyiter.com/bbs/forum.php?mod=viewthread&tid=1140&extra=page%3D1