Я боролся с этим некоторое время, и я не мог найти ответ на мою проблему.
Сценарий следующий:
Одно веб-приложение, использующее игровую среду, запущено на движке приложений Google. Попытка прикрепить 2 файла PDF к электронному письму и отправить его. С одним файлом он работает отлично. С двумя я получаю ошибки.
Вот код:
пакетное приложение;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.MimeType;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
public class Mailer {
public static void sendEmail(String to, String subject, String body, byte[] pdf1, byte[] pdf2)
throws AddressException, MessagingException, UnsupportedEncodingException{
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("myAddress@gmail.com", "John Smith"));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to, to));
msg.setSubject(subject);
msg.setText(body);
Multipart mp = new MimeMultipart();
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(body, "text/html");
mp.addBodyPart(htmlPart);
//Attaching first pdf
MimeBodyPart attachment = new MimeBodyPart();
attachment.setFileName("pdf1.pdf");
DataSource src = new ByteArrayDataSource(pdf1, "application/pdf");
attachment.setDataHandler(new DataHandler(src));
mp.addBodyPart(attachment);
//Attaching second pdf
attachment = new MimeBodyPart();
attachment.setFileName("pdf2.pdf");
src = new ByteArrayDataSource(badgePDF, "application/pdf");
attachment.setDataHandler(new DataHandler(src));
mp.addBodyPart(attachment);
msg.setContent(mp);
Transport.send(msg);
}
}
К сожалению, у меня нет сообщения об ошибке, даже если я печатаю стек отслеживаемых исключений, но я полагаю, что существует проблема с объектом DataSource. Я ценю любую помощь.