springBoot集成阿里云企业邮箱

前言

springboot项目,集成阿里云企业邮箱,进行邮件发送,附带文件

代码

public class AliyunMail {

    public static final String ALIDM_SMTP_HOST = "smtp.qiye.aliyun.com";
    public static final String ALIDM_SMTP_PORT = "25";

    /**
     * @param sendAddress 发件人地址
     * @param sendPassword 发件人密码
     * @param subject 标题
     * @param content 内容
     * @param filePath 附件地址
     * @throws Exception
     * @throws AddressException
     */
    public void sendMail(String sendAddress,String sendPassword,String subject,String content,String internetAddress,String filePath) throws AddressException, Exception {
        //设置SSL连接、邮件环境
        Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
        Properties props = System.getProperties();
        props.setProperty("mail.smtp.host", ALIDM_SMTP_HOST);
        props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
        props.setProperty("mail.smtp.socketFactory.fallback", "false");
        //设置端口
        props.setProperty("mail.smtp.port", ALIDM_SMTP_PORT);
        //启用调试
        props.setProperty("mail.debug", "true");
        props.setProperty("mail.smtp.socketFactory.port", "465");
        props.setProperty("mail.smtp.auth", "true");
        //建立邮件会话
        Session session = Session.getDefaultInstance(props, new Authenticator() {   //身份认证
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                //发件人账号、密码
                return new PasswordAuthentication(sendAddress, sendPassword);
            }
        });
        //建立邮件对象
        MimeMessage message = new MimeMessage(session);
        //设置邮件的发件人、收件人、主题
        //附带发件人名字
        //  message.setFrom(new InternetAddress("from_mail@qq.com", "optional-personal"));
        //发件人账号
        message.setFrom(new InternetAddress(sendAddress));
        //收件人账号
        message.setRecipients(Message.RecipientType.TO, internetAddress);

        //标题
        //邮件标题
        message.setSubject(subject);

        //内容
        Multipart multipart = new MimeMultipart();
        BodyPart contentPart = new MimeBodyPart();
        //邮件内容
        contentPart.setContent(content, "text/html;charset=utf-8");
        multipart.addBodyPart(contentPart);

        //附件部分
        if (StringUtils.isNotBlank(filePath)) {
            BodyPart attachPart = new MimeBodyPart();
            //附件地址
            FileDataSource fileDataSource = new FileDataSource(filePath);
            attachPart.setDataHandler(new DataHandler(fileDataSource));
            attachPart.setFileName(MimeUtility.encodeText(fileDataSource.getName()));
            multipart.addBodyPart(attachPart);
        }

        message.setContent(multipart);

//        //抄送地址
//        if (StringUtils.isNotBlank(CC)) {
//            InternetAddress[] internetAddressCC = new InternetAddress().parse(CC);
//            message.setRecipients(Message.RecipientType.CC, internetAddressCC);
//        }

        //发送邮件
        Transport.send(message);
    }
}

关键点

    public static final String ALIDM_SMTP_HOST = "smtp.qiye.aliyun.com";
    public static final String ALIDM_SMTP_PORT = "25";

这两个是阿里云企业邮箱服务地址和端口,一般不变。
附件部分,需要注意附件大小,这个有发件邮箱设置而来。

<think>好的,我现在需要向用户介绍如何将Spring Boot整合企业邮箱。首先,我得理清楚整个过程的大致步骤,确保覆盖所有关键点。 用户可能想要通过他们的Spring Boot应用程序发送邮件,比如注册确认、密码重置或者通知邮件。整合企业邮箱通常涉及到配置SMTP服务器,而企业邮箱比如网易企业邮箱、腾讯企业邮箱等都有自己的SMTP设置。我需要先确定常用的配置参数,比如主机地址、端口、安全协议等。 接下来,我应该考虑Spring Boot中用于邮件发送的依赖。通常会用Spring Boot Starter Mail,这个依赖包含了JavaMailSender的配置,所以需要提到在pom.xml中添加这个依赖。 然后,配置application.properties或application.yml文件是关键。这里需要给出示例配置,包括host、port、username、password,以及额外的properties比如加密方式、认证方式等。不同的企业邮箱可能有不同的端口和加密要求,比如SSL还是TLS,端口可能是465或者587,需要具体说明。 接下来,可能需要编写一个邮件发送的工具类或者服务类,使用JavaMailSender来发送邮件。这里要展示如何注入JavaMailSender,并编写发送简单邮件、HTML邮件或者带有附件的邮件的方法。需要提到MimeMessageHelper的使用,以及如何处理附件和内联资源。 此外,需要考虑异常处理,比如捕获MailException,并给出日志记录或者重试机制的建议。同时,提醒用户确保企业邮箱账户的SMTP功能已开启,有些邮箱需要单独启用SMTP服务。 可能还需要提到测试步骤,比如写一个单元测试或者主方法调用发送邮件的方法,验证是否成功。此外,如果企业邮箱有IP白名单或者需要授权码而不是密码的情况,也需要特别说明,比如腾讯企业邮箱可能使用授权码代替密码,这时候配置中的password应该是生成的授权码。 还要注意安全性,比如不要在代码中硬编码密码,建议使用环境变量或配置中心来管理敏感信息。另外,可能遇到常见的错误,比如连接超时、认证失败,需要给出排查建议,比如检查防火墙设置、确认端口是否正确、用户名密码是否正确等。 最后,总结一下整个流程,确保用户能够按照步骤一步步完成整合,并成功发送邮件。可能还需要提供一些参考链接,比如Spring官方文档或者企业邮箱的SMTP配置指南,方便用户进一步查阅。</think>SpringBoot整合企业邮箱通常通过JavaMailSender实现,以下是详细步骤和注意事项: --- ### **一、核心依赖** ```xml <!-- pom.xml --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ``` --- ### **二、邮箱配置** 在 `application.yml` 或 `application.properties` 中添加配置: ```properties # 以腾讯企业邮箱为例 spring.mail.host=smtp.exmail.qq.com spring.mail.port=465 spring.mail.username=yourname@company.com spring.mail.password=your-auth-password # 通常是授权码,非登录密码 spring.mail.protocol=smtp spring.mail.properties.mail.smtp.ssl.enable=true spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.connectiontimeout=5000 spring.mail.properties.mail.smtp.timeout=3000 ``` --- ### **三、发送邮件工具类** ```java @Service public class EmailService { @Autowired private JavaMailSender mailSender; /** * 发送简单文本邮件 */ public void sendSimpleEmail(String to, String subject, String content) { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("noreply@company.com"); message.setTo(to); message.setSubject(subject); message.setText(content); mailSender.send(message); } /** * 发送HTML格式邮件(带附件) */ public void sendHtmlEmail(String to, String subject, String htmlContent, Map<String, File> attachments) throws MessagingException { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("noreply@company.com"); helper.setTo(to); helper.setSubject(subject); helper.setText(htmlContent, true); // true表示支持HTML // 添加附件 if (attachments != null) { attachments.forEach((name, file) -> { try { helper.addAttachment(name, file); } catch (MessagingException e) { throw new RuntimeException("附件添加失败", e); } }); } mailSender.send(mimeMessage); } } ``` --- ### **四、常见企业邮箱配置参数** | 邮箱服务商 | SMTP服务器 | 端口 | 加密方式 | |-----------------|----------------------|-------|----------| | 腾讯企业邮箱 | smtp.exmail.qq.com | 465 | SSL | | 网易企业邮箱 | smtp.qiye.163.com | 994 | SSL | | 阿里企业邮箱 | smtp.mxhichina.com | 465 | SSL | | 微软Exchange | smtp.office365.com | 587 | STARTTLS | --- ### **五、关键注意事项** 1. **密码问题** - 腾讯/网易企业邮箱需使用「客户端授权码」而非登录密码 - 阿里云企业邮箱可能需要开启「SMTP服务」 2. **安全配置** ```properties # 强制验证服务器证书(避免中间人攻击) spring.mail.properties.mail.smtp.ssl.checkserveridentity=true ``` 3. **超时控制** ```properties spring.mail.properties.mail.smtp.writetimeout=5000 ``` 4. **发送频率限制** - 企业邮箱通常有发送频率限制(如腾讯邮箱默认200封/小时) --- ### **六、测试用例** ```java @SpringBootTest public class EmailTest { @Autowired private EmailService emailService; @Test void testSendEmail() { emailService.sendSimpleEmail( "target@example.com", "测试主题", "这是一封测试邮件" ); } } ``` --- ### **七、常见错误排查** 1. **认证失败** - 检查用户名/授权码是否正确 - 确认邮箱服务商是否开启SMTP 2. **连接超时** - 检查防火墙是否开放对应端口 - 尝试切换SSL/TLS加密方式 3. **554 DT:SPM** - 邮件内容被判定为垃圾邮件 - 优化邮件内容或联系邮箱服务商解封 --- 通过以上配置和代码示例,可快速实现SpringBoot企业邮箱集成。实际部署时建议将敏感信息(如密码)存储在配置中心或环境变量中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石榴丨花开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值