Как отправить файл размером более 25 МБ с помощью Java Mail API - PullRequest
1 голос
/ 13 июня 2019

Я разрабатываю приложение, которое отправляет электронную почту с вложениями, используя SMTP-хост Gmail. Но когда размер файла превышает 25 МБ, появляется сообщение о том, что " 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 МБ? Могу ли я изменить ограничение на размер файла в настройках учетной записи или сделать что-то подобное, если любой файл будет загружен в виде ссылки на диск?

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Удобный способ - это загрузить файл куда-нибудь и добавить ссылку на файл в письме.

Также можно разбить файл на несколько более мелких частей и отправить каждую часть своей почтой.,Затем получателю необходимо снова объединить файлы.

Zip-архиваторы обычно могут разбивать большие файлы на несколько zip-файлов, которые затем можно снова объединять.

Существует также необработанное разделение и объединение,Я не сталкивался со стандартными командами split, встроенными в дистрибутивы операционной системы.Но ваша программа может разбить файл любым способом.

Присоединение файлов в операционных системах Windows или Unix (Linux и др.) Довольно просто.В Windows вы переходите в командную строку и используете «copy»: copy file1+file2+file3 finalfile В Unix вы используете «cat»: cat file1 file2 file3 > finalfile

1 голос
/ 13 июня 2019

Нет.Это жесткий предел.Сам Gmail заявляет:

Если размер вашего файла превышает 25 МБ, Gmail автоматически добавляет ссылку на Google Диск в электронное письмо вместо того, чтобы включать ее в качестве вложения

Я бы тоже порекомендовал вам загрузить файл куда-нибудь и вставить ссылку в письмо.Возможные варианты: Google Drive, Mega, Dropbox, S3, ...

Кроме этого, вы ничего не можете сделать.

...