В общем, я пытаюсь отправлять электронные письма в формате HTML в приложении Google App Engine, используя javax.mail.Структура, которую я хочу для электронной почты:
Однако, когда я пытаюсь создать и отправить электронное письмо, используя эту структуру, это не работает на движке приложений Google.Одна проблема, в частности, заключалась в том, что независимо от структуры я не смог встроить составную часть в другую составную часть и отправить это электронное письмо на Google App Engine.
Я пытался создавать и отправлять электронные письма, используя эту структуру за пределамиприложения Google App Engine с использованием SMTP-сервера, и он работает нормально.Однако перенос этого же кода в мое реальное приложение не работает.
Я должен отметить, что я могу отправлять на движок приложений Google электронные письма в виде простого текста или только в формате html, но когда я пытаюсь сложить вместе все эти части, чтобы составить полное электронное письмо, происходит сбой.
Message msg = new MimeMessage(session);
Multipart multiPart = new MimeMultipart("alternative");
Multipart relatedMp = new MimeMultipart("related");
BodyPart txtBdp = new MimeBodyPart();
txtBdp.setContent(msgBody, "text/plain");
multiPart.addBodyPart(txtBdp);
BodyPart htmlBdp = new MimeBodyPart();
htmlBdp.setContent(htmlBody, "text/html");
relatedMp.addBodyPart(htmlBdp);
DataSource dataSrc = new FileDataSource(new File(imageFileNm));
BodyPart imageBdp = new MimeBodyPart();
imageBdp.setDataHandler(new DataHandler(dataSrc));
imageBdp.setFileName("logo.png");
imageBdp.setHeader("Content-ID", "<image_logo>");
imageBdp.setDisposition(MimeBodyPart.INLINE);
relatedMp.addBodyPart(imageBdp);
BodyPart relatedBdp = new MimeBodyPart();
relatedBdp.setContent(relatedMp);
multiPart.addBodyPart(relatedBdp);
msg.setFrom(new InternetAddress(emailAddr));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(emailAddr, recipientNm));
msg.setSubject(subject);
msg.setContent(multiPart);
msg.saveChanges();
Transport.send(msg);
Я получаю сообщение об ошибке:
Для вложения требуется контент и имя com.google.appengine.api.mail.MailService $ Attachment. (MailService.java:56) com.google.appengine.api.mail.stdimpl.GMTransport.convertAttachments (GMTransport.java:334) com.google.appengine.api.mail.stdimpl.GMTransport.convertAttachments (GMTransport.java:321) com.google.appengine.api.mail.stdimpl.GMTransport.convertAttachments (GMTransport.java:295) com.google.appengine.api.mail.stdimpl.GMTransport.sendMessage (GMTransport.java:262) javax.mail.Transport.send (Transport.java:95) javax.mail.Transport.send (Transport.java:48)
Я не уверен, почему этот код не работает, когда я запускаю его на движке приложений Google, учитывая, что я использую правильный формат имени для электронного письма, из которого нужно отправитьэто, и что этоработает за пределами Google App Engine.