Работа с AMP HTML электронными письмами

О AMP

AMP (Ускоренные Мобильные Страницы) - это фреймворк с открытым исходным кодом от Google, созданный на основе HTML, CSS и JavaScript. Он позволяет создавать легкие электронные письма с более быстрым временем загрузки. AMP предоставляет множество компонентов, таких как карусели, формы, изображения и др. Наряду с высокой скоростью, AMP письма отображают полностью интерактивные электронные письма внутри почтового клиента, и клиенты могут взаимодействовать с письмами напрямую, например, заполняя форму или отвечая на опрос, не покидая почтовый клиент.

Работа с AMP HTML электронными письмами

Aspose.Email предоставляет AmpMessage, который представляет AMP Email. Aspose.Email предлагает множество классов для добавления компонентов в AMP Emails, таких как AmpImageAmpCarouselAmpAccordionAmpForm и др. Следующий фрагмент кода демонстрирует создание, сохранение и обновление AMP Emails с использованием API Aspose.Email.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String dataDir = Utils.getSharedDataDir(CustomHyperlinkRendering.class) + "OutputDirectory/";
AmpMessage msg = new AmpMessage();
msg.setHtmlBody("<html><body> Hello AMP </body></html>");
//add AmpAnim component
AmpAnim anim = new AmpAnim(800, 400);
anim.setSrc("https://placekitten.com/800/400");
anim.setAlt("Test alt");
anim.setAttribution("The Go gopher was designed by Reneee French");
anim.getAttributes().setLayout(LayoutType.Responsive);
anim.setFallback("offline");
msg.addAmpComponent(anim);
//add AmpImage component
AmpImage img = new AmpImage(800, 400);
img.setSrc("https://placekitten.com/800/400");
img.setAlt("Test alt");
img.getAttributes().setLayout(LayoutType.Responsive);
msg.addAmpComponent(img);
//add AmpCarousel component
AmpCarousel car = new AmpCarousel(800, 400);
img = new AmpImage(800, 400);
img.setSrc("https://amp.dev/static/img/docs/tutorials/firstemail/photo_by_caleb_woods.jpg");
img.setAlt("Test 2 alt");
img.getAttributes().setLayout(LayoutType.Fixed);
car.getImages().add(img);
img = new AmpImage(800, 400);
img.setSrc("https://placekitten.com/800/400");
img.setAlt("Test alt");
img.getAttributes().setLayout(LayoutType.Responsive);
car.getImages().add(img);
img = new AmpImage(800, 400);
img.setSrc("https://amp.dev/static/img/docs/tutorials/firstemail/photo_by_craig_mclaclan.jpg");
img.setAlt("Test 3 alt");
img.getAttributes().setLayout(LayoutType.Fill);
car.getImages().add(img);
msg.addAmpComponent(car);
//add AmpFitText component
AmpFitText txt = new AmpFitText("Lorem ipsum dolor sit amet, has nisl nihil convenire et, vim at aeque inermis reprehendunt.");
txt.getAttributes().setWidth(600);
txt.getAttributes().setHeight(300);
txt.getAttributes().setLayout(LayoutType.Responsive);
txt.setMinFontSize(8);
txt.setMaxFontSize(16);
txt.setValue("Lorem ipsum dolor sit amet, has nisl nihil convenire et, vim at aeque inermis reprehendunt.");
msg.addAmpComponent(txt);
//add AmpAccordion component
AmpAccordion acc = new AmpAccordion();
acc.setExpandSingleSection(true);
Section sec = new Section();
sec.setHeader(new SectionHeader(SectionHeaderType.h2, "Section 1"));
sec.setValue(new SectionValue("Content in section 1."));
acc.getSections().add(sec);
sec = new Section();
sec.setHeader(new SectionHeader(SectionHeaderType.h2, "Section 2"));
sec.setValue(new SectionValue("Content in section 2."));
acc.getSections().add(sec);
img = new AmpImage(800, 400);
img.setSrc("https://placekitten.com/800/400");
img.setAlt("Test alt");
img.getAttributes().setLayout(LayoutType.Responsive);
sec = new Section();
sec.setHeader(new SectionHeader(SectionHeaderType.h2, "Section 3"));
sec.setValue(new SectionValue(img));
acc.getSections().add(sec);
msg.addAmpComponent(acc);
//add AmpForm component
AmpForm form = new AmpForm();
form.setMethod(FormMethod.Post);
form.setActionXhr("https://example.com/subscribe");
form.setTarget(FormTarget.Top);
FormField field = new FormField("Name:", "text");
field.setName("name");
field.setRequired(true);
form.getFieldset().add(field);
field = new FormField("Email:", "email");
field.setName("email");
field.setRequired(true);
form.getFieldset().add(field);
field = new FormField();
field.setInputType("submit");
field.setValue("Subscribe");
form.getFieldset().add(field);
msg.addAmpComponent(form);
msg.save(dataDir + "AmpTest_1.eml");
MailMessage savedmsg = MailMessage.load(dataDir + "AmpTest_1.eml");
AmpMessage ampMsg = (AmpMessage)savedmsg;
if(ampMsg != null)
{
Date dt = new Date();
AmpTimeago time = new AmpTimeago(dt);
time.getAttributes().setWidth(600);
time.getAttributes().setHeight(300);
time.getAttributes().setLayout(LayoutType.Fixed);
time.setLocale("en-US");
time.setCutoff(600);
ampMsg.addAmpComponent(time);
ampMsg.save(dataDir + "AmpTest_2.eml");
}