1

我有一个问题,我认为这是一个合乎逻辑的问题。因为我不完全理解石英的概念。

我有以下类:a- BirthdayServlet.java,b- QuartzJob.java,c- MailSenderBean.java

目标是在我的 Servlet 中使用 Quartz Scheduler 发送电子邮件。这是类代码。

a-BirtdayServlet 类

@WebServlet("/BirthdayServlet")
public class BirthdayServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public BirthdayServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
        protected void doGet(HttpServletRequest request, HttpServletResponse 
    response)
                throws ServletException, IOException {
            // TODO Auto-generated method stub
            response.getWriter().append("Served at: 
    ").append(request.getContextPath());
        }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.getWriter().println("I am Entering");

        JobDetail job = JobBuilder.newJob(QuartzJob.class).build();
        Trigger t1 = TriggerBuilder.newTrigger().withIdentity("SimpleTrigger").startNow().build();
        Scheduler sc = StdSchedulerFactory.getDefaultScheduler();
        sc.start();
        sc.scheduleJob(job, t1);

        response.getWriter().println("I am Leaving");

    }

}

b- QuartzJob.java 类

public class QuartzJob implements Job {
    @Override
    public void execute(JobExecutionContext arg0) throws JobExecutionException {

        String body = ("TryingMyQuartz");
        String subject = ("Recieved?");

        String EmpEmail = ("amrr@gmail.com");

        String sender = ("moha123@gmail.com");
        String password = ("012344");

        String senderDomain = ("@gmail.com");
        String senderUsername = ("moha123");

        MailSenderBean mailsender = new MailSenderBean();
        mailsender.sendEmail(sender, senderUsername, password, EmpEmail, subject, body, senderDomain);

    }

}

c- MailSenderBean.java

public class MailSenderBean {

    public void sendEmail(String sender, String senderUsername, String password, String EmpEmail, String subject,
            String body, String senderDomain) {
        Properties props = System.getProperties();

        if (senderDomain.equals("@gmail.com")) {
            props.put("mail.smtp.host", "smtp.gmail.com");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "465");
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.socketFactory.port", "465");
            props.put("mail.smtp.socketFactory.fallback", "false");

            Session mailSession = Session.getDefaultInstance(props, null);
            mailSession.setDebug(true);

            Message mailMessage = new MimeMessage(mailSession);
            try {
                mailMessage.setFrom(new InternetAddress(sender));
            } catch (MessagingException e) {
                // Sender mail not found

            }
            try {
                mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(EmpEmail));
            } catch (MessagingException e) {
                // Recipent mail not found

            }

            try {
                mailMessage.setContent(body, "text/html");
                mailMessage.setSubject(subject);
                Transport transport = mailSession.getTransport("smtps");
                transport.connect("smtp.gmail.com", senderUsername, password);
                transport.sendMessage(mailMessage, mailMessage.getAllRecipients());
            } catch (MessagingException e) {
                // Cannot transport that message Sorry!

            }

        }
    }

}

我有点确定 MailSenderBean 工作正常。所以问题出在 Servlet 或 QuartzJob 类上。我不知道我的代码到底有什么问题。但它不起作用。并且没有显示 response.getwirter("I am Leaving")。所以程序在制作调度 Job 或 Quartz 时终止。

4

0 回答 0