zoukankan      html  css  js  c++  java
  • java发生邮件(转)

    参考链接:http://www.runoob.com/java/java-sending-email.html

    package test.mail;
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import java.io.File;
    import java.util.Properties;
    
    /**
     * @author
     * Created by zhen on 2017-11-01.
     */
    public class EmailUtil {
    
        public static void SendMail(MailConfig mailConfig, MailBody mailBody) throws Exception{
    
            //获取系统属性
            Properties properties = System.getProperties();
    
            // 设置邮件服务器
            properties.setProperty("mail.smtp.host", mailConfig.getHost());
    
            Authenticator authenticator = null;
            if(mailConfig.isAuth()){
                //设置进行认证
                properties.put("mail.smtp.auth", "true");
    
                //设置认证参数
                authenticator = new Authenticator(){
                    @Override
                    public PasswordAuthentication getPasswordAuthentication()
                    {
                        return new PasswordAuthentication(mailConfig.getUserName(), mailConfig.getPassword()); //发件人邮件用户名、密码
                    }
                };
    
                if(mailConfig.isQQ()){ //假如是QQ邮箱
                    MailSSLSocketFactory sf = new MailSSLSocketFactory();
                    sf.setTrustAllHosts(true);
                    properties.put("mail.smtp.ssl.enable", "true");
                    properties.put("mail.smtp.ssl.socketFactory", sf);
                }
            }
    
            //获取默认的Session对象
            Session session = Session.getDefaultInstance(properties, authenticator);
    
            //创建默认的MimeMessage对象
            MimeMessage message = new MimeMessage(session);
    
            // set from: 头部字段
            message.setFrom(new InternetAddress(mailConfig.getFrom()));
    
            //set To: 头部字段
            String[] tos = mailConfig.getTOs();
            String[] bccs = mailConfig.getBCCs();
            String[] ccs = mailConfig.getCCs();
            InternetAddress[] toAddress = new InternetAddress[tos.length];
            InternetAddress[] bccAddress = new InternetAddress[bccs.length];
            InternetAddress[] ccAddress = new InternetAddress[ccs.length];
            for(int i = 0; i < tos.length; i++){
                toAddress[i] = new InternetAddress(tos[i]);
            }
            for(int i = 0; i < bccs.length; i++){
                bccAddress[i] = new InternetAddress(bccs[i]);
            }
            for(int i = 0; i < ccs.length; i++){
                ccAddress[i] = new InternetAddress(ccs[i]);
            }
            message.addRecipients(Message.RecipientType.TO, toAddress);
            message.addRecipients(Message.RecipientType.BCC, bccAddress);
            message.addRecipients(Message.RecipientType.CC, ccAddress);
    
            // set Subject: 头字段
            message.setSubject(mailBody.getSubject());
    
            //创建消息部分
            BodyPart messageBodyPart = new MimeBodyPart();
    
            //消息
            messageBodyPart.setContent(mailBody.getContent(), mailBody.getContentType());
    
            //创建多重消息
            Multipart multipart = new MimeMultipart();
    
            //设置消息部分
            multipart.addBodyPart(messageBodyPart);
    
            //附件部分
            for(File attachment : mailBody.getAttachments()){
                messageBodyPart = new MimeBodyPart();
                DataSource source = new FileDataSource(attachment);
                messageBodyPart.setDataHandler(new DataHandler(source));
                messageBodyPart.setFileName(attachment.getName());
                multipart.addBodyPart(messageBodyPart);
            }
    
            //设置完整消息
            message.setContent(multipart);
    
            //发送消息
            Transport.send(message);
    
        }
    
    }
    class MailConfig{
        private String from;
        private String[] TOs;
        private String[] BCCs;
        private String[] CCs;
        private String host;
        private boolean isAuth;
        private String userName;
        private String password;
        private boolean isQQ;
    
        public String getFrom() {
            return from;
        }
    
        public void setFrom(String from) {
            this.from = from;
        }
    
        public String[] getTOs() {
            return TOs;
        }
    
        public void setTOs(String[] TOs) {
            this.TOs = TOs;
        }
    
        public String[] getBCCs() {
            return BCCs;
        }
    
        public void setBCCs(String[] BCCs) {
            this.BCCs = BCCs;
        }
    
        public String[] getCCs() {
            return CCs;
        }
    
        public void setCCs(String[] CCs) {
            this.CCs = CCs;
        }
    
        public String getHost() {
            return host;
        }
    
        public void setHost(String host) {
            this.host = host;
        }
    
        public boolean isAuth() {
            return isAuth;
        }
    
        public void setAuth(boolean auth) {
            isAuth = auth;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public boolean isQQ() {
            return isQQ;
        }
    
        public void setQQ(boolean QQ) {
            isQQ = QQ;
        }
    }
    class MailBody{
        private String subject;
        private Object content;
        private String contentType;
        private File[] attachments;
    
        public String getSubject() {
            return subject;
        }
    
        public void setSubject(String subject) {
            this.subject = subject;
        }
    
        public Object getContent() {
            return content;
        }
    
        public void setContent(Object content) {
            this.content = content;
        }
    
        public String getContentType() {
            return contentType;
        }
    
        public void setContentType(String contentType) {
            this.contentType = contentType;
        }
    
        public File[] getAttachments() {
            return attachments;
        }
    
        public void setAttachments(File[] attachments) {
            this.attachments = attachments;
        }
    }
    
    
    package test.mail;
    
            import com.sun.mail.util.logging.MailHandler;
    
            import java.io.File;
    
            import javax.activation.DataHandler;
            import javax.activation.DataSource;
            import javax.activation.FileDataSource;
            import javax.mail.*;
            import javax.mail.internet.*;
            import java.util.Properties;
    
    /**
     * @author
     * Created by zhen on 2017-11-01.
     */
    public class SendEmail {
    
        public void sendSimpleEmail(String[] args) {
    
    
            //收件人电子邮箱
            String to = "18307006930@163.com";
    
            //发件人电子邮箱
            String from = "gz961012@126.com";
    
            //指定发送主机
            String host = "smtp.126.com";
    
            //获取系统属性
            Properties properties = System.getProperties();
    
            // 设置邮件服务器
            properties.setProperty("mail.smtp.host", host);
    
            //设置进行认证
            properties.put("mail.smtp.auth", "true");
    
            Session session = Session.getDefaultInstance(properties, new Authenticator(){
                @Override
                public PasswordAuthentication getPasswordAuthentication()
                {
                    return new PasswordAuthentication("gz961012@126.com", "899496gz"); //发件人邮件用户名、密码
                }
            });
    
            try{
                //创建默认的MimeMessage对象
                MimeMessage message = new MimeMessage(session);
    
                //set From;头部字段
                message.setFrom(new InternetAddress(from));
    
                //set To:头部字段
                message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    
                //set Subject: 头部字段
                message.setSubject("This is the Subject Line");
    
                //设置消息体
                message.setText("This is actual message");
    
                //发送消息
                Transport.send(message);
    
            }catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    
        public void sendHTMLEmail() {
    
            //收件人电子邮箱
            String to = "18307006930@163.com";
    
            //发件人电子邮箱
            String from = "gz961012@126.com";
    
            //指定发送主机
            String host = "smtp.126.com";
    
            //获取系统属性
            Properties properties = System.getProperties();
    
            // 设置邮件服务器
            properties.setProperty("mail.smtp.host", host);
    
            //设置进行认证
            properties.put("mail.smtp.auth", "true");
    
            //获取默认的Session对象
            Session session = Session.getDefaultInstance(properties, new Authenticator(){
                @Override
                public PasswordAuthentication getPasswordAuthentication()
                {
                    return new PasswordAuthentication("gz961012@126.com", "899496gz"); //发件人邮件用户名、密码
                }
            });
    
            try{
                //创建默认的MimeMessage对象
                MimeMessage message = new MimeMessage(session);
    
                // set from: 头部字段
                message.setFrom(new InternetAddress(from));
    
                //set To: 头部字段
                message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    
                // set Subject: 头字段
                message.setSubject("This is the Subject Line!");
    
                //发送HTML消息,可以插入HTML标签
                message.setContent("<h1><font color="red">This is actual message</font><h1>", "text/html");
    
                //发送消息
                Transport.send(message);
    
            }catch(Exception ex) {
                ex.printStackTrace();
            }
    
        }
    
        public void sendWithAttachment(String[] args){
            //收件人电子邮箱
            String to = "18307006930@163.com";
    
            //发件人电子邮箱
            String from = "gz961012@126.com";
    
            //指定发送主机
            String host = "smtp.126.com";
    
            //获取系统属性
            Properties properties = System.getProperties();
    
            // 设置邮件服务器
            properties.setProperty("mail.smtp.host", host);
    
            //设置进行认证
            properties.put("mail.smtp.auth", "true");
    
            //获取默认的Session对象
            Session session = Session.getDefaultInstance(properties, new Authenticator(){
                @Override
                public PasswordAuthentication getPasswordAuthentication()
                {
                    return new PasswordAuthentication("gz961012@126.com", "899496gz"); //发件人邮件用户名、密码
                }
            });
    
            try{
                //创建默认的MimeMessage对象
                MimeMessage message = new MimeMessage(session);
    
                // set from: 头部字段
                message.setFrom(new InternetAddress(from));
    
                //set To: 头部字段
                message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    
                // set Subject: 头字段
                message.setSubject("This is the Subject Line!");
    
                //创建消息部分
                BodyPart messageBodyPart = new MimeBodyPart();
    
                //消息
                messageBodyPart.setContent("<h1><font color="red">This is actual message</font><h1>", "text/html");
    
                //创建多重消息
                Multipart multipart = new MimeMultipart();
    
                //设置文本消息部分
                multipart.addBodyPart(messageBodyPart);
    
                //附件部分
                messageBodyPart = new MimeBodyPart();
                DataSource source = new FileDataSource("file.txt"); //目录位置为项目的根路径 F:/test/file.txt
                messageBodyPart.setDataHandler(new DataHandler(source));
                messageBodyPart.setFileName("file.txt");
                multipart.addBodyPart(messageBodyPart);
    
                //设置完整消息
                message.setContent(multipart);
    
                //发送消息
                Transport.send(message);
    
            }catch(Exception ex) {
                ex.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            MailConfig mailConfig = new MailConfig();
            mailConfig.setAuth(true);
            mailConfig.setHost("smtp.qq.com");
            mailConfig.setTOs(new String[]{"18307006930@163.com"});
            mailConfig.setBCCs(new String[]{"1580909730@qq.com"});
            mailConfig.setCCs(new String[]{});
            mailConfig.setUserName("3291984010@qq.com");
            mailConfig.setFrom("3291984010@qq.com");
            mailConfig.setPassword("ezmfkuhobxtqdbfi");
            mailConfig.setQQ(true);
    
            MailBody mailBody = new MailBody();
            mailBody.setSubject("一封测试邮件");
            mailBody.setContent("你好吗?guoDaXia!");
            mailBody.setContentType("text/plain;charset=UTF-8");
            mailBody.setAttachments(new File[]{new File("file.txt")});
    
            try {
                EmailUtil.SendMail(mailConfig, mailBody);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
  • 相关阅读:
    JVM调优总结(五)-分代垃圾回收详述1
    JVM调优总结(四)-垃圾回收面临的问题
    JVM调优总结(三)-基本垃圾回收算法
    JVM调优总结(二)-一些概念
    JVM调优总结(一)-- 一些概念
    ASP过滤HTML标签
    ASP防止盗链的一段代码
    通用安全字符串输入,彻底替换server.htmlencode
    ASP长文章分页的两个方法,函数
    自己用到的一个字符串替换函数
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/7768266.html
Copyright © 2011-2022 走看看