Работа с AMP HTML электронными письмами
О AMP
AMP (Ускоренные Мобильные Страницы) - это фреймворк с открытым исходным кодом от Google, созданный на основе HTML, CSS и JavaScript. Он позволяет создавать легкие электронные письма с более быстрым временем загрузки. AMP предоставляет множество компонентов, таких как карусели, формы, изображения и др. Наряду с высокой скоростью, AMP письма отображают полностью интерактивные электронные письма внутри почтового клиента, и клиенты могут взаимодействовать с письмами напрямую, например, заполняя форму или отвечая на опрос, не покидая почтовый клиент.
Работа с AMP HTML электронными письмами
Aspose.Email предоставляет AmpMessage, который представляет AMP Email. Aspose.Email предлагает множество классов для добавления компонентов в AMP Emails, таких как AmpImage, AmpCarousel, AmpAccordion, AmpForm и др. Следующий фрагмент кода демонстрирует создание, сохранение и обновление 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"); | |
} |