首页 > 其他分享 >邮件发送实现

邮件发送实现

时间:2024-07-01 10:57:46浏览次数:21  
标签:String 实现 param 发送 mail new properties 邮件

说明

通过smtp实现邮件发送功能

引入pom.xml

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

源码

/**
     * 发送邮件
     * @param username 发送者账号
     * @param password 发送者账号的密码
     * @param host 邮件服务器地址
     * @param port 邮件服务器端口
     * @param ssl 是否使用ssl
     * @param toUsername 接收者账号
     * @param subject 邮件主题
     * @param body 邮件内容
     * @param filePath 附件路径
     */
    public static void sendEmail(String username, String password, String host, String port, String ssl,String toUsername, String subject, String body,String filePath) {
        log.info("发送邮件中...");
        // 设置邮件服务器属性
        Properties properties = System.getProperties();
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", port);
        properties.put("mail.smtp.auth", ssl);
        if("true".equals(ssl)) {
            properties.put("mail.smtp.socketFactory.port", port);
            properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            properties.put("mail.smtp.socketFactory.fallback", "false");
        }
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });
        try {
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(username));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toUsername));
            message.setSubject(subject);
            //有附件的情况下
            Multipart multipart = new MimeMultipart();
            BodyPart contentPart = new MimeBodyPart();
            //邮件内容
            contentPart.setContent(body, "text/html;charset=utf-8");
            multipart.addBodyPart(contentPart);
            //邮件附件部分
            if (org.apache.commons.lang3.StringUtils.isNotBlank(filePath)) {
                String[] filePathArr=filePath.split(",");
                for (String path: filePathArr) {
                    //判断文件是否存在,如不存在则不加入附件
                    if(new File(path).exists()){
                        //将文件设置为附件
                        BodyPart attachPart = new MimeBodyPart();
                        //附件地址
                        FileDataSource fileDataSource = new FileDataSource(path);
                        attachPart.setDataHandler(new DataHandler(fileDataSource));
                        attachPart.setFileName(MimeUtility.encodeText(fileDataSource.getName()));
                        multipart.addBodyPart(attachPart);
                    }
                }
            }
            message.setContent(multipart);
            //没有附件
            //message.setText(body);
            Transport.send(message);
            log.info("邮件发送成功!");
        } catch (MessagingException | UnsupportedEncodingException e) {
            log.error("邮件发送失败!", e);
        }
    }

标签:String,实现,param,发送,mail,new,properties,邮件
From: https://blog.csdn.net/weixin_46836162/article/details/140094787

相关文章

  • 在Linux中,如何使用xargs和exec实现把当前目录下所有后缀名为.txt的⽂件的权限修改为77
    在Linux中,要使用xargs和exec结合find命令来批量修改当前目录下所有后缀名为.txt的文件权限为777,可以按照以下步骤操作:查找.txt文件:首先,使用find命令来查找当前目录及其子目录下的所有.txt文件。这里我们使用-name"*.txt"来指定查找的文件名模式。传递给xargs:然后,通过管......
  • 搭建个人直播间,实现24小时B站、斗鱼、虎牙等无人直播!
    大家好,我是Java陈序员。不知道大家平时看不看直播呢?现在有各式各样的直播,游戏直播、户外直播、带货直播、经典电视/电影直播等等。电视、电影直播是24小时不间断无人直播,如斗鱼/虎牙中的一起看,这种直播要如何实现呢?其实非常简单,只需要一台服务器和视频资源就能完成。再借助......
  • 代码随想录算法训练营第十天|232.用栈实现队列、225.用队列实现栈、20.有效的括号、 1
    今天学习了栈与队列这两个数据结构,栈是一个先进后出的结构,在C++中用stack进行表示,有push、pop、top、empty这些属性;队列是一个先进后出的结构,有push、pop、front、back。empty这些属性。在底层实现上,他们都是用deque双向队列进行实现的。232.用栈实现队列题目链接:232.用栈......
  • C#winform如何在窗体实现视频播放
    1.在Form窗体设计中的左侧工具箱列表中右击鼠标,单击选择项。2.在弹出的对话框中点击COM组件,选择WindowsMediaPlayer,点击确定3.接着在工具箱选择WindowsMediaPlayer控件,将控件添加到窗体中,并且添加一个OpenFileDialog控件4.接着在工具箱的对话框中将OpenFileDialog添加......
  • 网络隔离后 用这种安全U盘可实现数据安全传输
    在网络隔离的环境下,尤其是物理隔离环境下,使用安全U盘进行数据传输可以被视为一种安全的方法。不过前提是要确保以下几点:1、来源可信性:确保U盘的来源是可信的,没有被感染或篡改过的风险。最好使用自己的U盘,或者来自于安全可靠的来源。2、扫描病毒:在使用U盘之前,应该通过安全的杀......
  • 粮仓管理系统的设计与实现boot论文
    摘 要如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统粮仓管理系统信息管理难度大,容错率低,管理人员处理数据费工费时,所以专门为解决这个难题开发了一个粮仓管理系......
  • 基于springbo在线考试系统研究与实现万字文档PPT源码分享
    前言......
  • 拉普拉斯网格变形实现
    因为课题需要,除了RBF还做了一个Laplace网格变形,其他大佬已经把原理写的很详细了,我就简单介绍一下公式,主要还是写写实现过程。过程同样参考了大佬的部分代码,而且实现的时候刚开始敲代码不久,所以有点乱QAQ。首先,计算离散拉普拉斯坐标,网格上的点vi的拉普拉斯坐标δi为:\[\delta_{i}=......
  • 独家原创 | Matlab实现CNN-Transformer多变量回归预测
    独家原创|Matlab实现CNN-Transformer多变量回归预测目录独家原创|Matlab实现CNN-Transformer多变量回归预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现CNN-Transformer多变量回归预测;2.运行环境为Matlab2023b及以上;3.data为数......
  • 2.2.4 C#中显示控件BDPictureBox 的实现----ROI交互
    2.2.4C#中显示控件BDPictureBox的实现----ROI交互1界面效果在设定模式下,可以进行ROI框的拖动,这里以Rect1举例说明2增加ROI类定义///<summary>///ROI_single///用于描述图片感兴趣区域///type:0:Rect1;1:Rect2;2:Circle;3:Ellipse;4:Arc;5:Polygen;6:Poi......