当前位置: 首页 > 面试题库 >

如何使用JavaMail将多个文件附加到电子邮件?

梁鸿风
2023-03-14
问题内容

以下Java代码用于将文件附加到电子邮件。我想通过电子邮件发送 多个 文件附件。任何建议,将不胜感激。

public class SendMail {

    public SendMail() throws MessagingException {
        String host = "smtp.gmail.com";
        String Password = "mnmnn";
        String from = "xyz@gmail.com";
        String toAddress = "abc@gmail.com";
        String filename = "C:/Users/hp/Desktop/Write.txt";
        // Get system properties
        Properties props = System.getProperties();
        props.put("mail.smtp.host", host);
        props.put("mail.smtps.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        Session session = Session.getInstance(props, null);

        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO, toAddress);
        message.setSubject("JavaMail Attachment");
        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setText("Here's the file");
        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(messageBodyPart);
        messageBodyPart = new MimeBodyPart();
        DataSource source = new FileDataSource(filename);
        messageBodyPart.setDataHandler(new DataHandler(source));
        messageBodyPart.setFileName(filename);
        multipart.addBodyPart(messageBodyPart);
        message.setContent(multipart);

        try {
            Transport tr = session.getTransport("smtps");
            tr.connect(host, from, Password);
            tr.sendMessage(message, message.getAllRecipients());
            System.out.println("Mail Sent Successfully");
            tr.close();
        } catch (SendFailedException sfe) {
            System.out.println(sfe);
        }
    }
}`

问题答案:

好吧,自从我完成JavaMail工作已经有一段时间了,但是看起来您可以重复多次此代码:

DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);

例如,您可以编写一个方法来做到这一点:

private static void addAttachment(Multipart multipart, String filename)
{
    DataSource source = new FileDataSource(filename);
    BodyPart messageBodyPart = new MimeBodyPart();        
    messageBodyPart.setDataHandler(new DataHandler(source));
    messageBodyPart.setFileName(filename);
    multipart.addBodyPart(messageBodyPart);
}

然后从您的主要代码中,只需调用:

addAttachment(multipart, "file1.txt");
addAttachment(multipart, "file2.txt");

等等



 类似资料:
  • 问题内容: 我想发送带有PDF附件的电子邮件。我创建了PDF文件,然后执行了以下操作,但我认为这是错误的: 在发送电子邮件之前,我可以看到附件,但是当我发送电子邮件时,它的发送没有附件,这是因为我没有正确附加文件。 问题答案: 您错了。使用代替。

  • 我试图发送一个附加的json文件到电子邮件,但是由于某种原因,在发送/创建电子邮件时,json文件没有被附加。注意:我不希望用户选择要附加的文件,我希望它被固定/自动设置。 我有以下权限在我的 还有密码 编辑1:在做了@piyushpk建议的建议更改后,我现在在选择电子邮件应用程序时会出现以下错误: 然而,根据我的打印声明,文件大小只有69KB。。。

  • 目前,我的代码使用IMAP(imaps)和JavaMail访问我的Gmail收件箱,目的是阅读从最新到最旧发送给我自己的电子邮件,识别哪些电子邮件具有. zip或. xap格式的附件。如果找到,电子邮件的主题会显示出来,并询问我是否要下载附件。 如果我单击否,它会继续搜索。如果我单击是,它会调用createFolder方法来创建一个目录,将附件保存在那里,然后提取它。 问题:我收件箱中最近的一封电

  • 问题内容: 有没有办法将图像附加到用PHP创建的html格式的电子邮件中? 我们需要确保在发送给可能在阅读电子邮件时无法访问Internet的客户的电子邮件上带有公司徽标(显然,他们可以下载文件)。 问题答案: 尝试使用PEARMail_Mime软件包,该软件包可以为您嵌入图像。 您需要使用addHTMLImage()方法并传递内容ID(cid),这是一个唯一的文本字符串,您还将在img的src属

  • 我正在尝试发送一封带有附件的确认电子邮件,电子邮件地址为strapi provider email NodeEmailer。该插件显然支持附件,但我不知道我应该在strapi后端的何处添加这些附件。有人知道如何将附件添加到通过strapi NodeEmailer发送的电子邮件中吗?

  • 我在发送带有多个附件的电子邮件时遇到问题。代码如下: 我收到邮件,但找不到任何附件。有人知道会出什么问题吗? 下面是我在Mail中得到的电子邮件正文: