美文网首页
使用javax.mail发送邮件(二)--带附件邮件

使用javax.mail发送邮件(二)--带附件邮件

作者: 是夏莞也是CiCi | 来源:发表于2017-06-15 15:24 被阅读59次

    使用javax.mail发送邮件(二)--带附件邮件

    package SendEmailTest;
    
    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.activation.FileDataSource;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.*;
    import java.io.File;
    import java.util.Properties;
    
    /**
     * Created by mi on 2017/5/12.
     */
    public class SendEmailWithAttach {
        public static void sendMail(String fromMail, String user, String password, String toMail, String mailTitle, String mailContent) {
    
            //加载一个配置文件
            Properties props = new Properties();
    
            // smtp:简单邮件传输协议
            // 设置邮件服务器主机名
            props.put("mail.smtp.host", "smtp.163.com");
    
            //发送服务器需要通过验证
            props.put("mail.smtp.auth", "true");
    
            //设置环境信息
            Session session = Session.getInstance(props);//根据属性新建一个邮件会话
            session.setDebug(true); //会打印一些调试信息。
    
            //由邮件会话新建一个消息对象
            MimeMessage message = new MimeMessage(session);
    
            Transport transport = null;
            //设置邮件内容
            try {
                message.setFrom(new InternetAddress(fromMail));//设置发件人的地址
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail));//设置收件人,并设置其接收类型为TO
                message.setSubject(mailTitle);//设置标题
                //设置信件内容
    
                //因为需要加载附件,需要装载多个主体部件
                MimeMultipart partList = new MimeMultipart("mixed");
                message.setContent(partList);
    
                //创建一个部件
                MimeBodyPart part1 = new MimeBodyPart();
                part1.setText(mailContent);
                partList.addBodyPart(part1);
    
                //再创建一个部件
                MimeBodyPart part2 = new MimeBodyPart();
    
                // 添加附件的内容
                DataSource source = new FileDataSource("D:/export.xlsx");
                part2.setDataHandler(new DataHandler(source));
    
                //指定附件的名字,使用MimeUtility.encode()对中文进行编码
                part2.setFileName(MimeUtility.encodeText("数据报表.xlsx")); //设置的这个新的名字一定要带有后缀格式啊.xlsx!!!
    
                partList.addBodyPart(part2);
    
                //发送邮件
                transport = session.getTransport("smtp");
                transport.connect(user, password);
                transport.sendMessage(message, message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址
            }catch (Exception e) {
                e.printStackTrace();
            }finally {
                try{
                    transport.close(); //这个最好放到finally中哎
                }catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static void main(String[] args) {
            try{
                sendMail("xxx@163.com", "xxx@163.com", "xxx",
                        "xxx@qq.com",
                        "Java Mail 正式邮件",
                        "这是一个特别重要的邮件:<b>超级超级重要</b>");
            }catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    
    }
    

    That's all. Thank U~

    相关文章

      网友评论

          本文标题:使用javax.mail发送邮件(二)--带附件邮件

          本文链接:https://www.haomeiwen.com/subject/tyfuqxtx.html