java发送邮件(谷歌,QQ)

该代码示例展示了如何在Java中使用javax.mail库发送带有富文本和多个附件的电子邮件,特别提到了QQ邮箱和谷歌邮箱需要生成专用密码。邮件的发送涉及SMTP服务器配置、授权认证以及MimeMessage和Multipart的使用。
摘要由CSDN通过智能技术生成

导入依赖

    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.6.2</version>
    </dependency>

QQ和谷歌都要生成专用的密码

QQ:

开启服务
在这里插入图片描述
生成授权码
在这里插入图片描述

谷歌:

启用IMAP
在这里插入图片描述
开启两步验证
在这里插入图片描述
进入两步验证,找到应用专业密码
在这里插入图片描述
生成应用专业密码
在这里插入图片描述

业务实现(包括富文本和多个附件)

 //采用QQ邮箱测试
    public Object send(EmailBean emailBean, HttpServletRequest request) {
        emailBean.setUsername("176*********@qq.com"); //发件人邮箱
        emailBean.setPassword("************");        //发件人授权码

        // 创建Properties对象,设置邮件服务器相关属性
        Properties props = new Properties();
        emailBean.setHost("smtp.qq.com"); //qq : smtp.qq.com,   gmail : smtp.gmail.com
        emailBean.setPort("465");

        props.put("mail.smtp.host", emailBean.getHost());
        props.put("mail.smtp.port", emailBean.getPort());
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.ssl.enable", "true");

        EmailBean finalEmailBean = emailBean;
        Session session = Session.getInstance(props, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(finalEmailBean.getUsername(), finalEmailBean.getPassword());
            }
        });


        //发送给订阅者
        try {
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(emailBean.getUsername()));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("*****@qq.com")); //收件人邮箱,其他类型的邮箱都可以发送
            message.setSubject(emailBean.getTitle()); //邮件主题

            //正文部分
            MimeBodyPart textPart = new MimeBodyPart();
            textPart.setContent(emailBean.getContent(), "text/html;charset=utf-8"); //这里设置类型为富文本

            //正文+附件
            MimeMultipart mimeMultipart = new MimeMultipart();
            mimeMultipart.addBodyPart(textPart);

            //附件部分,考虑多个附件
            if (CollectionUtils.isNotEmpty(files)) {
                for (MultipartFile file : files) {
                    String fileName = file.getOriginalFilename();

                    // 将文件保存到临时目录
                    File tempFile = File.createTempFile("temp", fileName);
                    file.transferTo(tempFile);
                    MimeBodyPart filePart = new MimeBodyPart();
                    // 将文件附加到邮件中
                    filePart.attachFile(tempFile);

                    // 设置附件的文件名
                    filePart.setFileName(fileName);
                    mimeMultipart.addBodyPart(filePart);
                }
            }

            message.setContent(mimeMultipart);

            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
            return ResponseBean.serverError("发送邮件失败");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        return ResponseBean.success("发送成功!");
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值