SpringCloud配置EMail服务器启动启动不了

文章介绍了在SpringBoot应用中使用SpringCloudNacos作为配置中心,以及如何配置JavaMailSender实现邮件发送。特别提到刚启动时@Autowired可能报红,因为Nacos配置未初始化,需确保YAML配置正确。
摘要由CSDN通过智能技术生成

技术:

SpringCloud Nacos

结论:

  1. 如果使用@Autowired的时候如果是红的并且你是使用了Nacos是正常的,因为刚开始是找不到Nacos的配置的,如果是本地(即application.yml)配置的话那么也不用担心接着往后看
    @Autowired
    JavaMailSenderImpl javaMailSender;
  1. 注意application.yml或者Nacos上面的配置的问题得配置的正确才可以

完整案例:

Maven

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

application.yml

spring:
  servlet:
    multipart:
      enabled: true #是否启用http上传处理
      max-request-size: 100MB #最大请求文件的大小
      max-file-size: 20MB #设置单个文件最大长度
  #      file-size-threshold: 20MB #当文件达到多少时进行磁盘写入
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/network_disk?useUnicode=true&useSSL=false&characterEncoding=utf8&allowPublicKeyRetrieval=true
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        group: DEFAULT_GROUP
        namespace: 8c953a50-00c5-4988-8c71-d04f76c13509
   #邮箱基本配置
  mail:
    #配置smtp服务主机地址
    # qq邮箱为smtp.qq.com          端口号465或587
    # sina    smtp.sina.cn
    # aliyun  smtp.aliyun.com
    # 163     smtp.163.com       端口号465或994
    nickname: 囧站
    host: smtp.qq.com
    #发送者邮箱
    username: hhh@qq.com
    #配置密码,注意不是真正的密码,而是刚刚申请到的授权码
    password: fjdsfjdosfjodsfids
    #端口号465或587
    port: 587
    #默认的邮件编码为UTF-8
    default-encoding: UTF-8
    #其他参数
    properties:
      mail:
        #配置SSL 加密工厂
        smtp:
          ssl:
            #本地测试,先放开ssl
            enable: false
            required: false
            #开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误
        debug: true
  main:
    lazy-initialization: true

java


@Service
@Log
public class SendEmailServiceImp implements SendEmailService{

    @Autowired
    JavaMailSenderImpl javaMailSender;

    @Value("${spring.mail.username}")
    private String sendEmailAccount;

    @Value("${spring.mail.nickname}")
    private String myName;

    @Override
    public boolean sendVerificationCode(EmailBody emailBody) {
        try {
            //true 代表支持复杂的类型
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(),true);
            //邮件发信人
            mimeMessageHelper.setFrom(myName+"<"+sendEmailAccount+">");
            //邮件收信人  1或多个
            mimeMessageHelper.setTo(emailBody.getEmail());
            //邮件主题
            mimeMessageHelper.setSubject("囧站快递点验证码:");
            //邮件内容
            String text =
                    "<!DOCTYPE html>\n" +
                            "<html lang=\"en\">\n" +
                            "<head>\n" +
                            "    <meta charset=\"UTF-8\">\n" +
                            "    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n" +
                            "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
                            "    <title>获取验证码:</title>\n" +
                            "</head>\n" +
                            "<body style='font-family: 黑体;'>" +
                            " <h2>账号为:<font style='color: #1abc9c;'>"+
                            emailBody.getEmail() +
                            "</font></h2>" +
                            " <h2>本次验证码为: <font style='color: #ff6348;'>"+
                            emailBody.getVerification()+
                            "</font></h2>" +

                            "</body>\n" +
                            "</html>";
            mimeMessageHelper.setText(text,true);
            //邮件发送时间
            mimeMessageHelper.setSentDate(new Date());

            //发送邮件
            javaMailSender.send(mimeMessageHelper.getMimeMessage());
            log.info("发送邮件成功:"+sendEmailAccount+"->"+ emailBody.getEmail());


        } catch (MessagingException e) {
            e.printStackTrace();
            log.info("发送邮件失败:"+e.getMessage());
            return false;
        }
        return true;

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

堕落年代

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

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

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

打赏作者

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

抵扣说明:

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

余额充值