java创建邮件并发送

创建邮件涉及到的类:MimeMessage、MimeBodyPart、MimeMultipart

发送邮件涉及到的类:Transport

相关类:Session、Properties

实例:

/**
     * 制作带附件的邮件并发送
     * 
     * @throws Exception
     */
    public static void makeEmailAndSend() throws Exception {
        String from = "";// 发件箱
        String to = "";// 收件箱
        String subject = "test";// 邮件主题
        String body = "testResult";// 邮件内容

        // 邮件服务器地址以及登陆用户名和密码
        String smtpHost = "";
        String user = "";
        String password = "";

        Properties props = new Properties();// Properties用户属性配置
        props.setProperty("mail.transport.protocol", "smtp");// 使用的协议(JavaMail规范要求)
        props.setProperty("mail.smtp.host", smtpHost);// 发件人的邮箱的 SMTP服务器地址
        props.setProperty("mail.smtp.auth", "true");// 请求认证,参数名称与具体实现有关

        Session session = Session.getDefaultInstance(props);// session对象主要用于属性操作和会话管理
        // 创建MimeMessage对象,定义MIME消息头信息
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(MimeMessage.RecipientType.TO, to);
        message.setSubject(subject);
        message.setSentDate(new Date());
//        message.setText(body);//发纯文本邮件,可以直接用setText

        // 定义一个MimeMultipart对象,可以包含多个MimeBodyPart
        MimeMultipart multipart = new MimeMultipart();
        // 表示邮件的一个MIME消息
        MimeBodyPart bodyPart = new MimeBodyPart();
        bodyPart.setContent(body, "text/html;charset=utf-8");// 设置HTML格式的邮件正文
        multipart.addBodyPart(bodyPart);

        // 创建一个附件的MimeBodyPart对象, 并将它加入到前面创建的MimeMultipart对象中
        MimeBodyPart attachment = new MimeBodyPart();
        FileDataSource dataSource = new FileDataSource("D:\\test.jpg");
        attachment.setFileName(dataSource.getName());
        attachment.setDataHandler(new DataHandler(dataSource));
        multipart.addBodyPart(attachment);
        //将multipart对象添加到消息体中
        message.setContent(multipart);
        message.saveChanges();//保存并生成邮件内容

        // 用JavaMail Session对象的getTransport 方法来初始化Transport
        Transport transport = session.getTransport("smtp");
        transport.connect(smtpHost, user, password);
        // 发送,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }

 

posted @ 2017-06-08 11:33  幽兰吐秀自含芳  阅读(294)  评论(0编辑  收藏  举报