zoukankan      html  css  js  c++  java
  • java--->>发送邮件


    发送邮件依赖一个jar包 javax.mail.jar 包 用之前先把包导入
    http://files.cnblogs.com/files/wenjie123/javax.mail.jar.rar


    package com.svse;
    import java.io.File; /* *建立 附件类,只有文件,即附件才文件名 */ public class AttachBean { private String cid; private File file; private String fileName; public String getCid() { return cid; } public void setCid(String cid) { this.cid = cid; } public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public AttachBean() { } public AttachBean(File file, String fileName) { super(); this.file = file; this.fileName = fileName; } }


    package com.svse;
    
    import java.util.ArrayList;
    import java.util.List;
    /**
     * 表示邮件类,你需要设置:账户名和密码、收件人、抄送(可选)、暗送(可选)、主题、内容,以及附件(可选)
     * 
     * 在创建了Mail对象之后
     * 可以调用它的setSubject()、setContent(),设置主题和正文
     * 也可以调用setFrom()和 addToAddress(),设置发件人,和添加收件人。
     * 也可以调用addAttch()添加附件
     * 创建AttachBean:new AttachBean(new File("..."), "fileName");
     */
    public class Mail {
        private String from;//发件人
        private StringBuilder toAddress = new StringBuilder();//收件人
        private StringBuilder ccAddress = new StringBuilder();//抄送
        private StringBuilder bccAddress = new StringBuilder();//暗送
        
        private String subject;//主题
        private String content;//正文
        
        // 附件列表
        private List<AttachBean> attachList = new ArrayList<AttachBean>();
        
        public Mail() {}
        
        public Mail(String from, String to) {
            this(from, to, null, null);
        }
        
        public Mail(String from, String to, String subject, String content) {
            this.from = from;
            this.toAddress.append(to);
            this.subject = subject;
            this.content = content;
        }
        
        /**
         * 返回发件人
         * @return
         */
        public void setFrom(String from) {
            this.from = from;
        }
        
        /**
         * 返回发件人
         * @return
         */
        public String getFrom() {
            return from;
        }
        
        /**
         * 返回主题
         */
        public String getSubject() {
            return subject;
        }
    
        /**
         * 设置主题
         */
        public void setSubject(String subject) {
            this.subject = subject;
        }
    
        /**
         * 获取主题内容
         */
        public String getContent() {
            return content;
        }
    
        /**
         * 设置主题内容
         * @param content
         */
        public void setContent(String content) {
            this.content = content;
        }
    
        /**
         * 获取收件人
         * @return
         */
        public String getToAddress() {
            return toAddress.toString();
        }
    
        /**
         * 获取抄送
         * @return
         */
        public String getCcAddress() {
            return ccAddress.toString();
        }
    
        /**
         * 获取暗送
         * @return
         */
        public String getBccAddress() {
            return bccAddress.toString();
        }
    
        /**
         * 添加收件人,可以是多个收件人
         * @param to
         */
        public void addToAddress(String to) {
            if(this.toAddress.length() > 0) {
                this.toAddress.append(",");
            }
            this.toAddress.append(to);
        }
    
        /**
         * 添加抄送人,可以是多个抄送人
         * @param cc
         */
        public void addCcAddress(String cc) {
            if(this.ccAddress.length() > 0) {
                this.ccAddress.append(",");
            }
            this.ccAddress.append(cc);
        }
    
        /**
         * 添加暗送人,可以是多个暗送人
         * @param bcc
         */
        public void addBccAddress(String bcc) {
            if(this.bccAddress.length() > 0) {
                this.bccAddress.append(",");
            }
            this.bccAddress.append(bcc);
        }
        
        /**
         * 添加附件,可以添加多个附件
         * @param attachBean
         */
        public void addAttach(AttachBean attachBean) {
            this.attachList.add(attachBean);
        }
        
        /**
         * 获取所有附件
         * @return
         */
        public List<AttachBean> getAttachs() {
            return this.attachList;
        }
    }
    
    
    package com.svse;
    
    import java.io.IOException;
    import java.util.List;
    import java.util.Properties;
    import javax.mail.Authenticator;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    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;
    import javax.mail.internet.MimeMessage.RecipientType;
    
    /**
     * 建立邮件工具类  发送邮件
     * @author 00
     *
     */
    public class MailUtils {
        public static Session createSession(String host, final String username, final String password) {
            Properties prop = new Properties();
            prop.setProperty("mail.host", host);// 指定主机
            prop.setProperty("mail.smtp.auth", "true");// 指定验证为true
    
            // 创建验证器
            Authenticator auth = new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            };
            
            // 获取session对象
            return Session.getInstance(prop, auth);
        }
        
        /**
         * 发送指定的邮件
         * 
         * @param mail
         */
        public static void send(Session session, final Mail mail) throws MessagingException,
                IOException {
    
            MimeMessage msg = new MimeMessage(session);// 创建邮件对象
            msg.setFrom(new InternetAddress(mail.getFrom()));// 设置发件人
            msg.addRecipients(RecipientType.TO, mail.getToAddress());// 设置收件人
    
            // 设置抄送
            String cc = mail.getCcAddress();
            if (!cc.isEmpty()) {
                msg.addRecipients(RecipientType.CC, cc);
            }
    
            // 设置暗送
            String bcc = mail.getBccAddress();
            if (!bcc.isEmpty()) {
                msg.addRecipients(RecipientType.BCC, bcc);
            }
    
            msg.setSubject(mail.getSubject());// 设置主题
    
            MimeMultipart parts = new MimeMultipart();// 创建部件集对象
    
            MimeBodyPart part = new MimeBodyPart();// 创建一个部件
            part.setContent(mail.getContent(), "text/html;charset=utf-8");// 设置邮件文本内容
            parts.addBodyPart(part);// 把部件添加到部件集中
            
            ///////////////////////////////////////////
    
            // 添加附件
            List<AttachBean> attachBeanList = mail.getAttachs();// 获取所有附件
            if (attachBeanList != null) {
                for (AttachBean attach : attachBeanList) {
                    MimeBodyPart attachPart = new MimeBodyPart();// 创建一个部件
                    attachPart.attachFile(attach.getFile());// 设置附件文件
                    attachPart.setFileName(MimeUtility.encodeText(attach
                            .getFileName()));// 设置附件文件名
                    String cid = attach.getCid();
                    if(cid != null) {
                        attachPart.setContentID(cid);
                    }
                    parts.addBodyPart(attachPart);
                }
            }
    
            msg.setContent(parts);// 给邮件设置内容
            Transport.send(msg);// 发邮件
        }
    }    
    package com.wenjie;
    
    import java.io.IOException;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import cn.itcast.mail.Mail;
    import cn.itcast.mail.MailUtils;
    
    public class MailTest {
        public static void main(String args[]){
            String host = "smtp.163.com";//网易163邮件传输协议     腾讯 qq的是smtp.qq.com
            /**
             * 这里需要注意一下  如果你想用qq邮箱作为发件人邮箱的话  记得把邮箱传输协议host值改为smtp.qq.com
             * 另外 username登陆名还是 一样  直接写QQ号,不用加后缀
             */
            String username = "用户名>不加后缀";//发件人邮箱的用户名 这里不要加后缀@163.com
            
            /**  注意事项
             * 如果是用的QQ邮箱的话  这里的password不能写QQ邮箱的登陆密码  你要去登录到QQ邮箱  点  设置>账户   下面会有一个"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务"
             * 选项,把"POP3/SMTP服务"  开启来 这时候 如果你之前没开启过 那么会提示你 设置独立密码  设置完成后  password的值就写你刚才设置的独立密码即可 ,否则会验证失败
             * 如果你用的是163或者126的话 就直接写登陆密码即可
             */
            String password = "密码";  //发件人邮箱的登陆密码
            
            /**
             * 这里发件人 要写全名
             */
            String from = "邮箱全名";//发件人的邮箱 全名 加后缀
            
            /**
             * 收件人 同样要写全名
             */
            String to = "收件人的邮箱";//收件人的邮箱
            /**
             * 主题自定义
             */
            String subject = "邮件测试";//邮件主题
            /**
             * 自定义
             */
            String content = "http://http://www.cnblogs.com/wenjie123";//邮件的内容
            
            /**
             * 调用写好的邮件帮助类 MailUtils  直接调用createSession 根据以上(host, username, password三个参数)创建出session
             */
            Session session = MailUtils.createSession(host, username, password);
            /**
             * 创建邮件对象from, to,subject,content 这三个参数
             */
            Mail mail = new Mail(from, to,subject,content);
            try {
                /**
                 * 最后一步  调用MailUtils的send方法 将session和创建好的邮件对象传进去  发送就ok了
                 */
                MailUtils.send(session, mail);
            } catch (MessagingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


  • 相关阅读:
    hdu1242 Rescue BFS广搜 + 优先队列
    hdu 1430 魔板
    康托展开
    hdu 4394 Digital Square(bfs)
    hdu 1969 Pie
    KMP模板
    hdu 1846 Brave Game
    循环赛日程表
    hdu 1022 Train Problem I
    整数划分问题
  • 原文地址:https://www.cnblogs.com/wenjie123/p/4643008.html
Copyright © 2011-2022 走看看