JWB11:Java邮件实现

本文介绍了如何在Java中使用Maven依赖来发送邮件,包括添加javax.mail和javax.activation的依赖,以及QQ邮箱开启SMTP和POP3服务的步骤。同时,提供了发送简单邮件和带有附件的邮件的代码实现,包括配置邮件服务器、创建Session、设置发件人和收件人、添加内容等关键步骤。
摘要由CSDN通过智能技术生成

11.1 maven依赖

<dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>

11.2 邮箱账号开启STMP与POP3服务(以下qq邮箱示例)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1eDHHiHK-1629527623074)(JavaWeb%E6%80%BB%E7%BB%93.assets/image-20210820225330266.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RH96H96D-1629527623077)(JavaWeb%E6%80%BB%E7%BB%93.assets/image-20210820225406618.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8EQ4kunJ-1629527623079)(JavaWeb%E6%80%BB%E7%BB%93.assets/image-20210820225611655.png)]

顺便一提: 开启成功后,获得授权码,保存好,这是邮箱发送的凭证。且开启操作各大平台都大同小异。

11.3 代码实现

简单邮件:

    private void simpleMail() throws Exception{
        final String hostMail="1137208994@qq.com";        //设置自己的邮箱
        final String AuthorizationCode="fezitwdsjuqojbgj";    //授权码
        String serverHost="smtp.qq.com";            //设置邮箱平台的服务器
        String consignee = "2446547730@qq.com";     //设置收件人,可以有很多



        //配置服务器内容,照抄即可
        Properties prop = new Properties();
        prop.setProperty("mail.host",serverHost);        //设置qq邮件服务器
        prop.setProperty("mail.transport.protocol","smtp"); //设置传输协议
        prop.setProperty("mail.smtp.auth","true");

        //qq邮箱需要使用SSL加密,其他邮箱平台不需要。照抄即可
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable","true");
        prop.put("mail.smtp.ssl.socketFactory",sf);

        //创建环境对象的Session对象,qq独有,其他平台也不用。
        Session session = Session.getDefaultInstance(prop, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(hostMail,AuthorizationCode);
            }
        });

        //开启debug模式,可以看看后台输出信息
        session.setDebug(true);

        //通过session获取transport对象
        Transport ts = session.getTransport();

        //使用用户名与授权码连接服务器
        ts.connect(serverHost,hostMail,AuthorizationCode);

        //创建邮件
        MimeMessage message = new MimeMessage(session);

        //设置邮件的主题,也就是标题
        message.setSubject("你好,这是邮件");
        //设置邮件发送人,也就是自己
        message.setFrom(new InternetAddress(hostMail));

        //设置收件人,收件人可以是String类型,也可以是Address[]数组。
        message.setRecipients(Message.RecipientType.TO,consignee);

        //设置邮件内容
        message.setContent("<h1 style=\"color:red\">明天还远吗</h1>","text/html;charset=utf8");

        //发送邮件
        ts.sendMessage(message,message.getAllRecipients());

        //关闭连接
        ts.close();
    }

携带附件:

    private void fileMail() throws Exception{
        final String hostMail="1137208994@qq.com";        //设置自己的邮箱
        final String AuthorizationCode="fezitwdsjuqojbgj";    //授权码
        String serverHost="smtp.qq.com";            //设置邮箱平台的服务器
        String consignee = "2446547730@qq.com";     //设置收件人,可以有很多



        //配置服务器内容,照抄即可
        Properties prop = new Properties();
        prop.setProperty("mail.host",serverHost);        //设置qq邮件服务器
        prop.setProperty("mail.transport.protocol","smtp"); //设置传输协议
        prop.setProperty("mail.smtp.auth","true");

        //qq邮箱需要使用SSL加密,其他邮箱平台不需要。照抄即可
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable","true");
        prop.put("mail.smtp.ssl.socketFactory",sf);

        //创建环境对象的Session对象,qq独有,其他平台也不用。
        Session session = Session.getDefaultInstance(prop, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(hostMail,AuthorizationCode);
            }
        });

        //开启debug模式,可以看看后台输出信息
        session.setDebug(true);

        //通过session获取transport对象
        Transport ts = session.getTransport();

        //使用用户名与授权码连接服务器
        ts.connect(serverHost,hostMail,AuthorizationCode);

        //创建邮件
        MimeMessage message = new MimeMessage(session);

        //设置邮件的主题,也就是标题
        message.setSubject("网站注册验证码");
        //设置邮件发送人,也就是自己
        message.setFrom(new InternetAddress(hostMail));

        //设置收件人,收件人可以是String类型,也可以是Address[]数组。
        message.setRecipients(Message.RecipientType.TO,consignee);

        //设置邮件内容:加载图片资源
        MimeBodyPart image = new MimeBodyPart();
        DataHandler dh =new DataHandler(new FileDataSource("C:\\Users\\yun\\Desktop\\test1.png"));
        image.setDataHandler(dh);
        image.setContentID("test1.png");            //附件设置setFileName();

        //设置邮件内容:准备正文
        MimeBodyPart text =new MimeBodyPart();
        text.setContent("这是图片邮件<img src='cid:test1.png'","text/html;charset=utf8");

        //设置邮件内容:描述数据关系
        MimeMultipart mm = new MimeMultipart();
        mm.addBodyPart(text);
        mm.addBodyPart(image);
        mm.setSubType("related");           //内嵌资源输入related,如果是独立的附件则输入mixed

        //设置邮件内容:保存到消息中
        message.setContent(mm);
        message.saveChanges();

        //发送邮件
        ts.sendMessage(message,message.getAllRecipients());

        //关闭连接
        ts.close();
    }

在使用中,我们会把它封装成为工具类,并且,桌面端与web端都可以使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值