0
나는 잠시 동안이 문제에 시달렸는데 문제에 대한 답을 찾을 수 없었습니다. 시나리오는 다음과 같습니다. Google 애플리케이션 엔진에서 실행되는 프레임 워크를 사용하는 웹 애플리케이션입니다. 2 개의 pdf 파일을 이메일에 첨부하여 보냅니다. 하나의 파일로 완벽하게 작동합니다. 두 사람은 오류가 있습니다. 코드는 다음과 같습니다. package app;이메일에 파일 두 개 이상 첨부하기
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("[email protected]", "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);
}
}
불행하게도 나는 잡힌 예외의 stackTrack를 인쇄 할 경우에도 오류 메시지가없는,하지만 난 내 생각은 데이터 소스 오브젝트에 문제가 있다는 것입니다. 어떤 종류의 도움에 감사드립니다.
Google 애플리케이션 엔진에 파일을 저장할 수 없기 때문에 pdf는 애플리케이션에 의해 생성되며 파일로 저장되지 않습니다. 그 이유는 데이터가 바이트 배열에있는 이유입니다. –
[MultiPartEmail] (http://commons.apache.org/email/apidocs/org/apache/commons/mail/MultiPartEmail.html)을 사용해 보셨습니까? –
아는 한 org.apache.commons를 사용할 수 없습니다. –