如何使用Java Mail API发送大于25 MB的文件

时间:2019-06-13 12:28:34

标签: java smtp gmail java-api

我正在设计一个使用Gmail的smtp主机发送带有附件的电子邮件的应用程序。但是当文件大于25 MB时,我收到一条错误消息,提示“ 552-5.2.3您的消息超出了Google的消息大小限制。请访问https://support.google.com/mail/?p=MaxSizeError以查看我们的大小准则。 188sm2692677pfg.11 -gsmtp

    final String username = "username@gmail.com";
    final String password = "password";

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

    Session session = Session.getInstance(prop,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("username@gmail.com"));
        message.setRecipients(
                Message.RecipientType.TO,
                InternetAddress.parse("receiver address"));
        message.setSubject("This mail is a test mail");
     BodyPart messageBodyPart = new MimeBodyPart();  
     messageBodyPart.setText("Message");


     Multipart multipart = new MimeMultipart();


     multipart.addBodyPart(messageBodyPart);


     messageBodyPart = new MimeBodyPart();
     String filename = <Path>;
     DataSource source = new FileDataSource(filename);
     messageBodyPart.setDataHandler(new DataHandler(source));
     messageBodyPart.setFileName(filename);
     multipart.addBodyPart(messageBodyPart);

     message.setContent(multipart);

        Transport.send(message);


    } catch (MessagingException e) {
        JOptionPane.showMessageDialog(null, e.getMessage());
    }

是否可以发送大于gmail的25 MB限制的文件? 我可以通过帐户设置更改文件大小上传限制,还是可以执行任何操作,例如将任何文件作为驱动器链接上传?

2 个答案:

答案 0 :(得分:1)

不。那是硬性限制。 Gmail本身指出:

  

如果文件大于25 MB,则Gmail会自动在电子邮件中添加Google云端硬盘链接,而不是将其作为附件

这也是我为您推荐的,上传文件 somewhere 并将链接粘贴到邮件中。选项可能是:Google云端硬盘,Mega,Dropbox,S3,...

除此之外,您无能为力。

答案 1 :(得分:1)

用户友好的方法可能是将文件上传到某处,并在邮件中添加指向文件的链接。

还可以将文件分成几个较小的部分,然后以自己的邮件形式发送每个部分。然后,收件人需要再次将文件合并在一起。

Zip存档器通常可以将大文件拆分为多个zip文件,然后可以将其再次合并在一起。

还有原始拆分和合并。我还没有遇到过标准内置于操作系统发行版中的拆分命令。但是您的程序可以按照您希望的任何方式分割文件。

在Windows或Unix(Linux和其他)操作系统下,加入文件非常容易。在Windows中,请转到命令提示符并使用“复制”:copy file1+file2+file3 finalfile在Unix中,请使用“ cat”:cat file1 file2 file3 > finalfile