【JavaSE】实现通过JavaMail发送邮件

该文章详细介绍了如何使用JavaMailAPI发送邮件,包括开启SMTP服务、获取授权密码、创建Session工具类、发送普通文字邮件以及如何发送带有图片附件的邮件,还展示了如何将图片直接显示在邮件正文中。
摘要由CSDN通过智能技术生成

目录

准备工作

创建Session的工具类

 发送普通文字邮件

发送带有图片附件的邮件

将图片直接显示在正文中


准备工作

登录想要发送邮件的邮箱并开启SMTP服务确保为以下状态!!!!

 获取授权密码,切记赶快保存,只会显示一次!!!

自己导入一个javax.mail的jar包!!

自己去去找,因为我不知道咋上传!!

准备工作结束,以下将是代码模块!!!

创建Session会话,因为可能经常会用到,可以创建一个工具类,方便使用时调用!!

创建Session的工具类

public static Session createSession(){
        //邮箱账号信息
        String username = "xxxxxxxxxx@163.com";//邮箱发送账号
        String password ="xxxxxxxxx";//账号授权密码
        
        //SMTP服务器连接信息
        Properties props =new Properties();
        props.put("mail.smtp.host","smtp.163.com");//SMTP主机名
        props.put("mail.smtp.port","25");//主机端口号
        props.put("mail.smtp.auth","true");//是否需要用户认证
        props.put("mail.smtp.starttls.enable","true");//启动TLS加密

        /**
         * 创建Session会话
         * 参数一:smtp服务器连接参数
         * 参数二:账号和密码的授权认证对象
         */
        Session session =Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username,password);
            }
        });
        return session;
    }

 发送普通文字邮件

try {
            //1.创建Session会话
            Session session = JavaMailUtils.createSession();

            //2.创建邮件对象
            MimeMessage message = new MimeMessage(session);
            message.setSubject("别害怕,这是一份测试邮件!!!");//设置邮件标题
            message.setText("你好?");//设置邮件正文
            //如果需要使用html标签 需如下设置
//            message.setText("<b>你好!!</b>","utf-8","html");
            message.setFrom(new InternetAddress("xxxxxxxx@163.com"));//发送邮件人账号
            message.setRecipient(Message.RecipientType.TO, new InternetAddress("xxxxxxxxx@qq.com"));//被发送人邮件账号
            //注意:如果想要添加抄送人 需增加以下代码
//            message.setRecipients(Message.RecipientType.CC,
//                    new InternetAddress[]{
//                    new InternetAddress("xxxxxxxx@qq.com"),
//                    new InternetAddress("xxxxxxxx@qq.com"),
//                    new InternetAddress("xxxxxxxx@qq.com")
//            });

            //3.发送邮件
            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }

发送带有图片附件的邮件

try {
            //1.创建Session会话
            Session session = JavaMailUtils.createSession();

            //2.创建MineMessage邮件对象
            MimeMessage message =new MimeMessage(session);

            message.setFrom(new InternetAddress("xxxxxxxx@163.com"));//发件人
            message.setRecipient(Message.RecipientType.TO,new InternetAddress("xxxxxxx@qq.com"));//收件人
            message.setRecipients(Message.RecipientType.CC, new InternetAddress[]{
                    new InternetAddress("xxxxxxxx@qq.com"),
                    new InternetAddress("xxxxxxxxx@qq.com")});//抄送人
            message.setSubject("还有更好康的图片!!");//标题

            //正文
            BodyPart textPart = new MimeBodyPart();
            textPart.setContent("好康的!","text/html;charset=utf-8");

            //附件
            BodyPart filePart = new MimeBodyPart();
            filePart.setFileName("很好康的图片");//附件名称

            //上传附件文件
            filePart.setDataHandler(
                    new DataHandler(
                            new ByteArrayDataSource(
                                    Files.readAllBytes(Paths.get("C:\\Users\\cc\\Desktop\\IMG_20221028_233825.jpg")),
                                            "application/octet-stream")));

            //将正文+附件组装成Multipart对象
            Multipart multipart =new MimeMultipart();
            multipart.addBodyPart(textPart);
            multipart.addBodyPart(filePart);

            //将Multipart对象放入邮件
            message.setContent(multipart);

            //3.发送邮件
            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

将图片直接显示在正文中

try {
            //1.创建Session会话
            Session session = JavaMailUtils.createSession();

            //2.创建MineMessage邮件对象
            MimeMessage message =new MimeMessage(session);

            message.setFrom(new InternetAddress("xxxxxxxx@163.com"));//发件人
            message.setRecipient(Message.RecipientType.TO,new InternetAddress("xxxxxxx@qq.com"));//收件人
            message.setRecipients(Message.RecipientType.CC, new InternetAddress[]{
                    new InternetAddress("xxxxxxxx@qq.com"),
                    new InternetAddress("xxxxxxxxx@qq.com")});//抄送人
            message.setSubject("还有更好康的图片!!");//标题

            //正文
            BodyPart textPart = new MimeBodyPart();
            StringBuilder contentText = new StringBuilder();
            contentText.append("<p>好康的!!</p>");
            contentText.append("<img src=\"cid:aaa\"/>");//aaa要与下面的aaa对应
            textPart.setContent(contentText.toString(),"text/html;charset=utf-8");

            //上传附件
            BodyPart imgPart = new MimeBodyPart();
            imgPart.setDataHandler(
                    new DataHandler(
                            new ByteArrayDataSource(
Files.readAllBytes(Paths.get("C:\\Users\\cc\\Desktop\\3b5d3.jpeg")),
"application/octet-stream")));

            imgPart.setHeader("Content-ID","aaa");//aaa要与上面的aaa对应

            //上传附件文件
            filePart.setDataHandler(
                    new DataHandler(
                            new ByteArrayDataSource(
                                    Files.readAllBytes(Paths.get("C:\\Users\\cc\\Desktop\\33825.jpg")),
                                            "application/octet-stream")));

            //将正文+附件组装成Multipart对象
            Multipart multipart =new MimeMultipart();
            multipart.addBodyPart(textPart);
            multipart.addBodyPart(filePart);

            //将Multipart对象放入邮件
            message.setContent(multipart);

            //3.发送邮件
            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值