springboot集成邮件发送

1、引入依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

2、为了账号授权码等等信息可以灵活运用,咱们选择JavaMailSenderImpl而不是选择用其父类JavaMailSender,附上代码

 public ApiResult<Boolean> sendMail(MailBo mailBo) {
        JavaMailSenderImpl javaMailSender = getJavaMailSender(mailBo);
        SimpleMailMessage message = new SimpleMailMessage();
        //邮件发送人
        message.setFrom(mailBo.getFromUserName());
        //邮件接收人
        message.setTo(mailBo.getEmailAddress());
        //邮件主题
        message.setSubject(mailBo.getMailSubject());
        //邮件内容
        message.setText(mailBo.getContext());

        if (StringUtils.isBlank(mailBo.getFilePath())) {
            try {
                javaMailSender.send(message);
            } catch (Exception e) {
                log.info("send mail failed");
                return ApiResult.failed(e.getMessage());
            }
            return ApiResult.ok(true);
        } else {
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            try {
                MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
                messageHelper.setFrom(mailBo.getFromUserName());
                messageHelper.setTo(mailBo.getEmailAddress());
                messageHelper.setSubject(mailBo.getMailSubject());
                messageHelper.setText(mailBo.getContext(), true);

                FileSystemResource file = new FileSystemResource(new File(mailBo.getFilePath()));
                String fileName = new File(mailBo.getFilePath()).getName();
                messageHelper.addAttachment(fileName, file);
                javaMailSender.send(mimeMessage);
                return ApiResult.ok(true);
            } catch (MessagingException e) {
                log.info("saveAndSendMailMessage failed: {}", e.getMessage());
                return ApiResult.failed(e.getMessage());
            }
        }
    }

    /**
     * 获取JavaMailSenderImpl
     *
     * @param mailBo
     * @return
     */
    private JavaMailSenderImpl getJavaMailSender(MailBo mailBo) {
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setUsername(mailBo.getUserName());
        javaMailSender.setPassword(mailBo.getPassword());
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.starttls.enable", mailBo.getStarttlsEnable());
        properties.setProperty("mail.smtp.port", mailBo.getToPort());
        properties.setProperty("mail.smtp.starttls.required", mailBo.getStarttlsRequired());
        properties.setProperty("mail.smtp.ssl.enable", mailBo.getSslEnable());
        javaMailSender.setJavaMailProperties(properties);
        javaMailSender.setHost(mailBo.getHost());
        //邮件编码
        javaMailSender.setDefaultEncoding(mailBo.getEncoding());
        return javaMailSender;
    }

3、BO参数类

@Data
public class MailBo {
    /**
     * 邮箱接收地址
     */
    @Email
    private String emailAddress;

    /**
     * 校验码
     */
    private String checkCode;

    /**
     * 邮件主题
     */
    private String mailSubject;

    /**
     * 发送内容
     */
    private String context;

    /**
     * 发送端邮箱地址
     */
    private String userName;

    /**
     * 发送端邮箱密码
     */
    private String password;

    /**
     * 接收端邮箱端口
     */
    private String toPort;

    /**
     * 发送端邮箱域名
     */
    private String host;

    /**
     * 发送端邮箱显示名
     */
    private String fromUserName;

    /**
     * 附件地址
     */
    private String filePath;

    private String starttlsEnable="true";
    private String starttlsRequired="true";
    private String sslEnable="true";
    private String encoding="utf-8";
}

4、代表示例

名称类型必须示例值描述校验规则
emailAddressStringtrue1129380134@qq.com接收方邮箱地址notNull
mailSubjectStringtrue主题邮件主题length>0
contextStringtrue你好邮件内容length>0
userNameStringtruegaiety@beyondsoft.com发送端邮件地址length>0
passwordStringtruevoucher20190917授权码,不是邮箱密码length>=0
toPortStringtrue465端口号length>0
hostStringtrueismtp.beyondsoft.com邮箱服务器主机length>=0
fromUserNameStringtruegaiety@beyondsoft.com发件方的账户,和Username的值相同length>0
filePathStringfalse/opt/image/123.jpg附件路径length>0
starttlsEnableStringfalsetrueTLS通讯协议开关,连接qq的SMTP服务器,需使用此通讯协议length>=0
starttlsRequiredStringfalsetruelength>=0
sslEnableStringfalsetruelength>=0
encodingStringfalseutf-8编码length>=0

5、请求示例

http://192.168.7.221:8852/supportSmsMessage/sms-mail

{
"emailAddress":"759676352@qq.com",
"mailSubject":"下面附上相关配置和代码111",
"context":"使用spring自带的JavaMailSenderImpl实现邮件发送",
"userName":"gaiety@beyondsoft.com",
"password":"voucher20190917",
"toPort":"465",
"host":"ismtp.beyondsoft.com",
"fromUserName":"gaiety@beyondsoft.com",
"starttlsEnable":"true",
"starttlsRequired":"true",
"sslEnable":"true",
"encoding":"utf-8",
"filePath":""
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot可以通过配置SMTP服务器来实现与Gmail的集成。以下是集成Gmail的步骤: 1. 在`application.properties`文件中添加以下配置: ```properties spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=your-email@gmail.com spring.mail.password=your-password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true ``` 请将`your-email@gmail.com`和`your-password`替换为您自己的Gmail帐户的电子邮件地址和密码。 2. 在您的Spring Boot应用程序中创建一个邮件服务类,例如`EmailService`,并注入`JavaMailSender`: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; @Service public class EmailService { @Autowired private JavaMailSender javaMailSender; public void sendEmail(String to, String subject, String text) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to); message.setSubject(subject); message.setText(text); javaMailSender.send(message); } } ``` 3. 在您的应用程序中使用`EmailService`发送电子邮件: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class EmailController { @Autowired private EmailService emailService; @GetMapping("/send-email") public String sendEmail() { emailService.sendEmail("recipient@example.com", "Test Email", "This is a test email."); return "Email sent successfully."; } } ``` 以上步骤将使您的Spring Boot应用程序能够通过Gmail SMTP服务器发送电子邮件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值