• java邮件发送(含附件)


    1. [代码]java邮件发送(含附件)
    疯狂的IT人站长整理的:利用Java发送邮件(含附件)的例子:
    1、邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面)
    emailsmtp=smtp.qq.com
    emailaddress=459104018@qq.com
    emailpass=******
    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");
        }
        /**网站模板
             * 进行用户身份验证时,设置用户名和密码
             */http://www.huiyi8.com/moban/
        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.jar
    mail-plugin.jar
    mail.jar

  • 相关阅读:
    Li Fei-fei写给她学生的一封信,如何做好研究以及写好PAPER(转载)
    OpenCV学习-——OpenCV永久配置(win7 64位+VS2012+OpenCV 2.4.6)
    Eclipse + Jdk配置Java编程环境
    BeautifulSoup安装与引用
    自动启动服务
    自动行列转置
    java-接口
    java基础-抽象类
    JAVA学习day 05 运算
    JAVA学习day 04 变量
  • 原文地址:https://www.cnblogs.com/xkzy/p/3820534.html
Copyright © 2020-2023  润新知