大太子二太子 2021-10-20 00:39 采纳率: 66.7%
浏览 27
已结题

java发送电子邮件,报错ClassNotFoundException: javax.mail.MessagingException

在本地idea上运行的很正常,但是打成jar包发送到云服务器上运行就报错,运行不起来

  • 写回答

2条回答 默认 最新

  • 让往事非 2021-10-20 09:17
    关注

    1.springboot集成email

    pom依赖

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

    设置邮箱

    yml配置

    spring:
      mail:
        host:  smtp.163.com  #服务主机地址
        port: 465 #服务端口
        username: xxx@163.com #邮箱
        password: xxxxxxxxxxxxxx #授权码
        default-encoding: UTF-8
        properties:
          mail:
            smtp:
              socketFactory:
                class: javax.net.ssl.SSLSocketFactory
            debug: true
    

    ​ 选用qq邮箱或者网易163开启服务STMP

    2.service实现类

    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.stereotype.Service;
    import javax.annotation.Resource;
    import javax.mail.internet.MimeMessage;
    import java.io.File;
    @Service
    public class MailService {
        @Resource
        JavaMailSender javaMailSender;
        /**
         * 最简单的邮件发送
         * @param from  发送方
         * @param to    接收方
    //     * @param cc    第三方(非必填)
         * @param subject   标题
         * @param content   内容
         */
        public void sendSimpleMail(String from,String to,String subject,String content){
            SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
            simpleMailMessage.setFrom(from);
            simpleMailMessage.setTo(to);
    //        simpleMailMessage.setCc(cc);
            simpleMailMessage.setSubject(subject);
            simpleMailMessage.setText(content);
            javaMailSender.send(simpleMailMessage);
        }
        /**
         * 代附件的邮件
         * @param from
         * @param to
         * @param subject
         * @param content
         * @param file
         */
        public void sendAttachFileMail(String from, String to, String subject, String content, File file) {
            try{
                MimeMessage mimeMessage = javaMailSender.createMimeMessage();
                MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
                mimeMessageHelper.setFrom(from);
                mimeMessageHelper.setTo(to);
                mimeMessageHelper.setSubject(subject);
                mimeMessageHelper.setText(content);
                mimeMessageHelper.addAttachment(file.getName(),file);
                javaMailSender.send(mimeMessage);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    

    3.调用实现

    @Autowired
    MailService mailService;
    @Test
    public void sendAttachFileMail(){
        try {
            mailService.sendSimpleMail("发送方邮箱","接收方邮箱","标题","hello world!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月15日
  • 已采纳回答 11月7日
  • 创建了问题 10月20日

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable