如何在联系表单提交按钮上发送电子邮件点击..?
how to send email on contact form submit button click..?
我现在使用 FormComponent 创建带有默认组件的组件,点击提交按钮我想向最近提交的用户发送电子邮件,我为邮件服务器配置 SMTP:
http://localhost:4502/system/console/configMgr
现在我不知道如何发送电子邮件,谁能帮我弄清楚我在这里遗漏了什么。提前致谢。
@Amitavin 试着问一个明确的问题,你会很容易得到帮助。
无论如何,据我了解你的问题,你似乎不知道如何使用电子邮件 API。检查此 link http://labs.sixdimensions.com/blog/2012-08-20/sending-email-adobe-cq-api/。
编写一个电子邮件服务来发送电子邮件..我正在为您编写下面的代码 reference.Code 由接口和实现组成。
- 请在 console/configMgr 中配置 Day cq 邮件服务 from ,to,smtp server,userid 和 password。
- 您可以使用本地 smtp 来测试您的电子邮件 functionality.set Day CQ 电子邮件服务中的 smpt 服务器作为 localhsot 并从 here 下载 smtp4dev。这个工具对于测试您的电子邮件功能非常有用当地的。
希望对您有所帮助
界面
import java.util.Map;
import org.apache.commons.mail.EmailException;
/**
*
* @author Dilip Boddula
*
*/
public abstract interface EmailService {
/**
*
* @param subject
* @param message
* @param to
* @param from
* @param cc
* @throws EmailException
*/
public void sendSimpleEmail(String subject, String message, String fromAddress, String[] to, String[] cc) throws EmailException;
}
和实施
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.jcr.Session;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.jcr.api.SlingRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.day.cq.mailer.MailService;
@Component(label = "E-mail Service", description = "desc.")
@Service
public class EmailServiceImpl implements EmailService {
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY, policy = ReferencePolicy.STATIC)
private MailService mailService;
@Override
public void sendSimpleEmail(String subject, String message, String fromAddress,String[] to,String[] cc) throws EmailException {
try {
List<String> toList = new ArrayList<>(Arrays.asList(to));
List<String> ccList = new ArrayList<>(Arrays.asList(cc));
validateToOrCCAddresses(toList, ccList);
Email email = new SimpleEmail();
email.setSubject(subject);
email.setMsg(message);
if(null != fromAddress){
email.setFrom(fromAddress);
}
for (String toAddress : toList) {
email.addTo(toAddress);
}
for (String ccAddress : ccList) {
email.addCc(ccAddress);
}
this.mailService.send(email);
} catch (Exception e) {
throw new EmailException(e);
}
}
private void validateToOrCCAddresses(List<String> toList, List<String> ccList) {
if ((toList == null) || (toList.isEmpty())) {
throw new IllegalArgumentException("Invalid To Addresses.");
}
if (ccList == null) {
throw new IllegalArgumentException("Invalid CC Addresses.");
}
for (Iterator<String> iterator = toList.iterator(); iterator.hasNext();) {
String recipient = "";
try {
recipient = iterator.next();
new InternetAddress(recipient);
} catch (AddressException e) {
LOGGER.error("Invalid To email address '{}' passed to sendEmail(). Skipping." + recipient, e);
iterator.remove();
}
}
if (toList.isEmpty()) {
throw new IllegalArgumentException("Invalid To Addresses.");
}
for (Iterator<String> iterator = ccList.iterator(); iterator.hasNext();) {
String recipient = "";
try {
recipient = iterator.next();
new InternetAddress(recipient);
} catch (AddressException e) {
LOGGER.error("Invalid CC email address '{}' passed to sendEmail(). Skipping." + recipient, e);
iterator.remove();
}
}
}
}
我现在使用 FormComponent 创建带有默认组件的组件,点击提交按钮我想向最近提交的用户发送电子邮件,我为邮件服务器配置 SMTP:
http://localhost:4502/system/console/configMgr
现在我不知道如何发送电子邮件,谁能帮我弄清楚我在这里遗漏了什么。提前致谢。
@Amitavin 试着问一个明确的问题,你会很容易得到帮助。
无论如何,据我了解你的问题,你似乎不知道如何使用电子邮件 API。检查此 link http://labs.sixdimensions.com/blog/2012-08-20/sending-email-adobe-cq-api/。
编写一个电子邮件服务来发送电子邮件..我正在为您编写下面的代码 reference.Code 由接口和实现组成。
- 请在 console/configMgr 中配置 Day cq 邮件服务 from ,to,smtp server,userid 和 password。
- 您可以使用本地 smtp 来测试您的电子邮件 functionality.set Day CQ 电子邮件服务中的 smpt 服务器作为 localhsot 并从 here 下载 smtp4dev。这个工具对于测试您的电子邮件功能非常有用当地的。
希望对您有所帮助
界面
import java.util.Map;
import org.apache.commons.mail.EmailException;
/**
*
* @author Dilip Boddula
*
*/
public abstract interface EmailService {
/**
*
* @param subject
* @param message
* @param to
* @param from
* @param cc
* @throws EmailException
*/
public void sendSimpleEmail(String subject, String message, String fromAddress, String[] to, String[] cc) throws EmailException;
}
和实施
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.jcr.Session;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.jcr.api.SlingRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.day.cq.mailer.MailService;
@Component(label = "E-mail Service", description = "desc.")
@Service
public class EmailServiceImpl implements EmailService {
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY, policy = ReferencePolicy.STATIC)
private MailService mailService;
@Override
public void sendSimpleEmail(String subject, String message, String fromAddress,String[] to,String[] cc) throws EmailException {
try {
List<String> toList = new ArrayList<>(Arrays.asList(to));
List<String> ccList = new ArrayList<>(Arrays.asList(cc));
validateToOrCCAddresses(toList, ccList);
Email email = new SimpleEmail();
email.setSubject(subject);
email.setMsg(message);
if(null != fromAddress){
email.setFrom(fromAddress);
}
for (String toAddress : toList) {
email.addTo(toAddress);
}
for (String ccAddress : ccList) {
email.addCc(ccAddress);
}
this.mailService.send(email);
} catch (Exception e) {
throw new EmailException(e);
}
}
private void validateToOrCCAddresses(List<String> toList, List<String> ccList) {
if ((toList == null) || (toList.isEmpty())) {
throw new IllegalArgumentException("Invalid To Addresses.");
}
if (ccList == null) {
throw new IllegalArgumentException("Invalid CC Addresses.");
}
for (Iterator<String> iterator = toList.iterator(); iterator.hasNext();) {
String recipient = "";
try {
recipient = iterator.next();
new InternetAddress(recipient);
} catch (AddressException e) {
LOGGER.error("Invalid To email address '{}' passed to sendEmail(). Skipping." + recipient, e);
iterator.remove();
}
}
if (toList.isEmpty()) {
throw new IllegalArgumentException("Invalid To Addresses.");
}
for (Iterator<String> iterator = ccList.iterator(); iterator.hasNext();) {
String recipient = "";
try {
recipient = iterator.next();
new InternetAddress(recipient);
} catch (AddressException e) {
LOGGER.error("Invalid CC email address '{}' passed to sendEmail(). Skipping." + recipient, e);
iterator.remove();
}
}
}
}