如何在联系表单提交按钮上发送电子邮件点击..?

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();
            }
        }
    }
}