2013年12月9日 星期一

[Liferay] 使用SubscriptionSender透過 Gmail 寄信的方法


1.Server Setting:


%liferay_home%\tomcat-7.0.40\conf\Catalina\localhost\ROOT.xml

在<Context .....>的內容裡面加上

<Resource
 name="mail/MailSession"
 auth="Container"
type="javax.mail.Session"
mail.pop3.host="pop.gmail.com"
mail.pop3.port="110"
mail.smtp.host="smtp.gmail.com"
mail.smtp.port="465"
mail.smtp.user=user@gmail.com
mail.smtp.password="password"
mail.smtp.auth="true"
 mail.smtp.starttls.enable="true"
       mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory"
       mail.imap.host="imap.gmail.com"
       mail.imap.port="993"
       mail.transport.protocol="smtp"
       mail.store.protocol="imap"
    />
</Context>





在portal-ext.properties裡面加上



mail.session.jndi.name=mail/MailSession

2.SubscriptionSender

SubscriptionSender subscriptionSender = new SubscriptionSender();
  String body = "";

  subscriptionSender.setSubject("your mail subject");

  body ="your mail content"

  User   receiver = UserLocalServiceUtil.getUser(receiverUserId());
   subscriptionSender.setUserId(receiver .getUserId());
   subscriptionSender.setCompanyId(receiver.getCompanyId());
   subscriptionSender.setMailId("user", receiver .getUserId());
   subscriptionSender.addRuntimeSubscribers(receiver .getEmailAddress(),
     receiver .getFullName());


   subscriptionSender.setBody(body);
   subscriptionSender.setFrom("fake@com.tw", "your system name or something");
   subscriptionSender.setHtmlFormat(false);
   subscriptionSender.flushNotificationsAsync();