Javamail 附加多个文件

2024-01-02

以下代码也使用 javamail api 通过 gmail smtp 服务器发送邮件和附件。

    public void doSendGmail(){
    from = txtFrom.getText();
    password= new String(txtPassword.getPassword());
    to = txtTo.getText();
    cc = txtCC.getText();
    bcc = txtBCC.getText();
    subject = txtSubject.getText();
    message_body = jtaMessage.getText();

    Properties props = new Properties();
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");

    Session session = Session.getInstance(props,null);

    try {
        //message definition
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
        if(!cc.equals("")){
            message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
        }
        if(!bcc.equals("")){
            message.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(bcc));
        }
        message.setSubject(subject);
        if(!filename.equals("")){// if a file has been attached...
            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText(message_body);// actual message
            Multipart multipart = new MimeMultipart();// create multipart message

            // add the text message to the multipart
            multipart.addBodyPart(messageBodyPart);

            // attachment part
            messageBodyPart = new MimeBodyPart();
            String attachment = fileAbsolutePath;
            DataSource source = new FileDataSource(attachment);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(filename);
            multipart.addBodyPart(messageBodyPart);//add the attachment to the multipart message
            // combine text and attachment
            message.setContent(multipart);
            // send the complete message
            Transport.send(message, from, password);
        }
        else{// if no file has been attached
            message.setText(message_body);
            Transport.send(message, from, password);
        }

        JOptionPane.showMessageDialog(this, "Message Sent!","Sent",JOptionPane.INFORMATION_MESSAGE);

    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, e.toString());
    }
}

此代码一次只能附加和发送一个文件。如何让它附加多个文件并将它们作为一封电子邮件发送?

使用 JFileChooser 附加文​​件,如下所示:

public void doAttachFile(){
    try {
        JFileChooser chooser = new JFileChooser();
        chooser.showOpenDialog(null);
        File file = chooser.getSelectedFile();
        filename = file.getName();// get name of selected file
        lblFileName.setText(filename);// display name of selected file
        fileAbsolutePath= file.getAbsolutePath();
        System.out.println("File name: "+filename+"\n"+"Absolute path: "+fileAbsolutePath);

    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, "No file was attached");
    }
}

在附件部分周围使用“for”循环。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javamail 附加多个文件 的相关文章

随机推荐

  • 我的第一个表值函数和游标

    我有这样的疑问 SELECT name lastname FROM contestant WHERE name John AND lastname Smith 我从上面的查询中得到了几个结果 我需要将它们用于以下查询 SELECT name
  • 未找到快速命令

    由于某种原因 在我的机器上全局安装 Express 后npm install g express if I cd进入目录并尝试运行express 我收到以下错误 express command not found 即使我运行它sudo我仍然
  • AssertionError:将使用不支持的标签('cp310','cp310','linux_x86_64')构建轮子

    当我尝试使用 Python 3 10 安装 numpy 时 我收到此消息 如何解决这个问题 Copying numpy egg info to build bdist linux x86 64 wheel numpy 1 19 3 py3
  • 使用 Node.js、流和 Promise 下载文件

    这是我的代码片段 var processListing function directoryItems console log foreach var itemsToDownload directoryItems forEach funct
  • 骨干.js https

    整个早上都在谷歌上搜索 但找不到答案 官方文档中甚至没有 https 或 ssl 字样 目前我有类似的东西 var A backbone Collection extend url a 有没有办法让 url https 而不使用绝对路径 我
  • 如何避免 uitextfield 旁边的点

    当文本大于 uitextfield 的宽度时 是否可以删除 uitextfield 旁边显示的点 如果您调用以下代码使键盘可见 这是可能的 self yourTextField 成为FirstResponder 然后较大的文本从左侧被剪切
  • Airflow - 获取 dag run 的开始时间

    是否有可能获得气流中 dag 的实际开始时间 我所说的开始时间是指 dag 的第一个任务开始运行的确切时间 我知道我可以使用宏来获取执行日期 如果使用trigger dag运行作业 这就是我所说的开始时间 但如果作业按每日计划运行 那么 e
  • 无法在中心显示材质 ui 小吃栏

    我有一个材料 ui 小吃栏 我需要将其显示在屏幕中间 下面是我试图传递的属性 使其显示在屏幕中心 但显示在屏幕顶部 anchorOrigin vertical center horizontal center https codesandb
  • 出现错误:/bin/sh scriptcs:找不到命令

    我正在使用 Visual Studio Code for Mac 运行扩展 CodeRunner 我有一个简单的程序 using System namespace HelloWorldApplication class HelloWorld
  • “X-UA-兼容”内容=“IE = 9; IE = 8; IE = 7; IE = EDGE”

    这句话究竟是什么意思呢 一些例子使用 分离 IE 的版本 而有些则使用 哪个是对的 命令IE 9 IE 8 IE 7 IE EDGE有一定的重要性 我想知道这一点 Edit 我在用 如果您支持 IE 对于 Internet Explorer
  • 获取 Jasper Reports 表中第一行和最后一行的第一个字母

    I am using JasperSoft Studio in Eclipse to generate a signup sheet for a church The page header has the label of what la
  • 从 python 列表中删除 '\n' 列表项

    我有一个列表 其中包含一个项目 n 我想删除它 但是 删除命令不起作用 谁能告诉我我做错了什么 def main list1 ng g ng g g n n ns ns s n nd d nd nd d d d n n print list
  • 提交时将表单数据发送到 Javascript

    好吧 我觉得这应该很简单 所以要么我完全错过了这里和我读过的其他网站上的问题的要点 要么没有在相同的上下文中被问到 我有一个非常简单的表单元素 如下
  • 创建 XSS 易受攻击的网页

    我想创建一个 XSS 易受攻击的网页 该网页执行在输入框中输入的脚本 我在这里编写了这段代码 但每当我输入脚本时 什么也没有发生 p You wrote p
  • 使用 matplotlib 和 seaborn 创建圆形密度图

    我正在尝试创建下面两个图像的组合 密度图 https i stack imgur com kV09a png 圆形条形图 https i stack imgur com tc7eG png 基本上我想要密度图的设计 但围绕一个圆圈而不是正常
  • Android:模拟器出厂数据重置菜单选项不起作用

    我正在尝试测试我自己创建的新 Android 系统级应用程序 该应用程序在执行设备出厂重置后捕获各种系统事件挂钩 通过 Android Studio AVD Manager 我创建了多个模拟 Android TV 设备 包括 Oreo 8
  • 数据框中每个唯一组合的频率

    在数据集中 N 6000 我想分析 15 个虚拟 变量组合出现的频率 ID Var1 Var2 Var3 Var15 1 1 0 0 1 2 0 1 1 1 3 1 0 0 0 6000 1 0 0 0 对于这个例子 我希望看到的是组合 1
  • 当使用字符串时,C++ 程序会出现运行时错误

    include
  • 如何运行 Visual Studio (2017) 安装程序?

    一旦你知道答案 它可能真的很明显 但我无法在任何地方找到它 我不是在谈论making安装程序 我指的是运行安装程序 让我可以修改安装的 Visual Studio 2017 的哪些功能 主屏幕如下所示 我需要的屏幕是这个 在 Visual
  • Javamail 附加多个文件

    以下代码也使用 javamail api 通过 gmail smtp 服务器发送邮件和附件 public void doSendGmail from txtFrom getText password new String txtPasswo