Я пытался отправить письмо через веб-приложение на Java в Liferay, но, похоже, ничего не работает - PullRequest
0 голосов
/ 11 января 2012

Ниже мой код, пожалуйста, укажите, что я делаю неправильно ?? Джава Я пытаюсь сделать это с помощью нашей внутренней сети. Это записано в методе processAction в портлете MVC.

String name=actionRequest.getParameter("name");
String email=actionRequest.getParameter("email");
String myMessage=actionRequest.getParameter("message");

String host = "smtp.xyz.com";
int port = 25;
String username = "xxx";
String password = "yyy";

    Properties props = new Properties();
    props.put("mail.transport.protocol","smtp");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.host", "smtp.xyz.com");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.user", username);
    props.put("mail.smtp.password", password);


    Session session = Session.getInstance(props);

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(email));
                          message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("xxx"));
        message.setSubject("Testing Subject");
        message.setText("From " + name + "," + myMessage);

        Transport transport = session.getTransport("smtp");
        transport.connect(host, port, username, password);

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }

}

1 Ответ

7 голосов
/ 11 января 2012

Если конфигурацию электронной почты можно использовать совместно с другими портлетами и с самим Liferay, попробуйте использовать встроенную почтовую службу, которая поставляется с Liferay

(зависит от com.liferay.mail.service.MailServiceUtil)

String fromEmail = "admin@example.com";
String fromName = "Site Administrator";
String subject = "Hello from example.com";
String body = "text of message";
InternetAddress from = new InternetAddress(fromEmail, fromName);
InternetAddress to = InternetAddress.parse("xxx");
MailMessage emailMessage = new MailMessage(from, to, subject, body, false);
MailServiceUtil.sendEmail(emailMessage);

Полный пример такого подхода: https://github.com/kastork/dharma-pm-portlet/blob/master/docroot/WEB-INF/src/com/dharma/pm/portlet/PMPortlet.java

При этом используется конфигурация почты, настроенная для портала, поэтому вам необходимо настроить Liferay для доступа к вашему SMTP-серверу.,(Возможно, вы все равно захотите, чтобы Liferay мог выполнять такие действия, как отправка напоминаний о паролях, уведомлений об изменениях вики-страниц и т. Д.).Вот одна из отправных точек для исследования этой задачи:

http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/ma-5

...