2013-12-07 5 views
1

Я использую Play Framework 2.2.0 с java 7.4.Play Framework 2.2.0 Java Email

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

У меня было много вариаций Build.scala, и Build.sbt. Я также пробовал неуправляемые зависимости и управляемые зависимости, тянущиеся от «maven». Я считаю, что он вызван и вытаскивается из моего каталога/lib соответственно. Пакеты я скачал на мой/Lib каталога являются:

Обще-IO-2,3

javax.mail

плей-плагины-mailer_2.2.0

Мои версии моего Build.scala были:

Build.scala

первая попытка:

import sbt._ 
import Keys._ 

object ApplicationBuild extends Build { 

    val appName   = "Asset Manager" 
    val appVersion  = "1.0" 

    val appDependencies = Seq(
     "mysql" % "mysql-connector-java" % "5.1.27", 
     "org.scala-tools" %% "scala-stm" % "0.3", 
     "org.apache.derby" % "derby" % "10.4.1.3" % "test", 
     "org.apache.commons" % "commons-email" % "1.3.1", 
     "commons-io" % "commons-io" % "2.3" 
    ) 
} 

вторая попытка:

import sbt._ 
import Keys._ 

object ApplicationBuild extends Build { 

    lazy val buildVersion = "2.2.0" 
    lazy val playVersion = "2.2.0" 

    val appName   = "Asset Manager" 
    val appVersion  = "1.0" 

    val appDependencies = Seq(
     "mysql" % "mysql-connector-java" % "5.1.27", 
     "org.scala-tools" %% "scala-stm" % "0.3", 
     "org.apache.derby" % "derby" % "10.4.1.3" % "test", 
     "commons-io" % "commons-io" % "2.3" 
    ) 

    libraryDependencies += "org.apache.commons" % "commons-email" % "1.3.1"; 
    libraryDependencies += "com.typesafe" %% "play-plugins-util" % buildVersion; 

} 

Мои Java Файл Отправка Parts.java:

первая попытка

package controllers; 

import play.libs.*; 

import java.io.*; 
import java.util.*; 

import org.apache.commons.mail.*; 

... 

     SimpleEmail email = new SimpleEmail(); 
     email.setFrom(User.getByUsername(Session.get("username")).email); 
     email.addTo(app.configuration().getString("ownerEmail")); 
     email.addTo(part.email); 
     email.setSubject("Part Added: " + part.vendor + " - " + part.label); 
     email.setMsg("A Part has been added to the Asset Manager:\n\n" 
      + part.toString()); 
     Mail.send(email); 

... 

вторая попытка:

package controllers; 

import play.libs.*; 

import java.io.*; 
import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.*; 
import javax.activation.*; 

import com.typesafe.plugin._; 

... 

      MailerAPI mail = play.Play.application().plugin(MailerPlugin.class).email(); 
      mail.setSubject("test"); 
      mail.addRecipient(""); 
      mail.addFrom(""); 
      mail.sendHtml("A Part has been added to the Asset Manager:\n\n" + part.toString()); 

... 

третья попытка:

import java.io.*; 
import java.util.*; 
import java.util.*; 
import javax.mail.internet.*; 
import javax.activation.*; 

... 

      String to = "..."; 
      String from = "..."; 
      String host = "localhost"; 
      Properties properties = System.getProperties(); 
      properties.setProperty("mail.smtp.host", host); 

      // Get the default Session object. 
      Session session = Session.getDefaultInstance(properties); 

      try{ 
       MimeMessage message = new MimeMessage(session); 
       message.setFrom(new InternetAddress(from)); 
       message.addRecipient(Message.RecipientType.TO, 
            new InternetAddress(to)); 
       message.setSubject("This is the Subject Line!"); 
       message.setText("This is actual message"); 

       // Send message 
       Transport.send(message); 
       System.out.println("Sent message successfully...."); 
      }catch (MessagingException me) { 
       me.printStackTrace(); 
      } 
... 

Мой вопрос, как я могу настроить мой Play Framework, так что это Безразлично 't скажите мне это:

**Compilation error** 

error: cannot find symbol 
In ..\app\controllers\Parts.java at line 116. 

113   // mail.addFrom(""); 
114   // mail.sendHtml("A Part has been added to the Asset Manager:\n\n" + part.toString()); 
115 
116   SimpleEmail email = new SimpleEmail(); 
117   email.setHostName("smtp.googlemail.com"); 
118   email.setSmtpPort(465); 
119   email.setFrom("",""); 
120   // email.setFrom(User.getByUsername(Session.get("username")).email); 
121   email.addTo(""); 

** примечание: я опорожнил несколько строк, содержащих личную информацию.

Всякий раз, когда я пытаюсь обновить свою страницу. Мне нужно знать, где я размещаю свою конкретную информацию о пакете, как выглядит build.scala, правильный ли порядок команд (../play clean; ../play dependencies; ../play), должен ли я быть используя управляемые или неуправляемые и в конечном счете, возможно ли это или нет!?!?

Спасибо всем.

+0

I раньше использовал редактор Sublime Text 2. Итак, я решил эту проблему, настроив новейшую версию eclipse. Я запустил команду eclipse для воспроизведения и импортировался с помощью документированных шагов Play. Это была проблема класса. Тем не менее, теперь электронные письма по-прежнему не отправляются, и не возникает ошибки. Используя объект SimpleEmail, я должен отправлять электронную почту с помощью localhost? – mk7upurz87

ответ

0

Спасибо за ответ. Я просто решил это сегодня утром! Ошибка была вызвана тем, что мои пакеты не добавлены на мой путь. Я настоятельно рекомендую использовать Power IDE для модификаций классов. Я ввел его в Eclipse и сразу же исправил мою ссылку на объект. Для почтовой программы сам вот мои результаты:

... 

import javax.mail.*; 
import javax.mail.internet.*; 

... 

    try { 
     String host = "smtp.gmail.com"; 
     String username = "[email protected]"; 
     String password = "password"; 
     InternetAddress[] addresses = {new InternetAddress("[email protected]"), 
      new InternetAddress(bid.email), 
      new InternetAddress("[email protected]")}; 
     Properties props = new Properties(); 

     // set any needed mail.smtps.* properties here 
     Session session = Session.getInstance(props); 
     MimeMessage message = new MimeMessage(session); 
     message.setSubject("my subject placed here"); 
     message.setContent("my message placed here:\n\n" 
       + part.toString(), "text/plain"); 
     message.setRecipients(Message.RecipientType.TO, addresses); 

     // set the message content here 
     Transport t = session.getTransport("smtps"); 
     try { 
      t.connect(host, username, password); 
      t.sendMessage(message, message.getAllRecipients()); 
     } finally { 
      t.close(); 
     }   
    } catch (MessagingException me) { 
     me.printStackTrace(); 
    } 
0

Похоже, у вас есть несколько вопросов:

  1. Как получить играть на работу с электронной почтой.
    • Для этого я предлагаю посмотреть код проверки воспроизведения и посмотреть, как они работают. В настоящее время я использую модуль для отправки электронной почты. play-authenticate
  2. Возможно, возникла проблема с получением журналов электронной почты. Вы пытались просмотреть системные журналы?/var/log/syslog (например, на Ubuntu/Debian). Там также журнал параметры конфигурации для игры here

  3. (Похоже, вы ее решили?) У вас есть:

    Ошибка компиляции

    ошибка: не удается найти символ В .. \ App \ контроллеры \ Parts.java в строке 116.

    • Нет ничего особенного в настройке путей для воспроизведения, пока у вас есть исполняемый файл воспроизведения в пути.
+0

Код, который я поставил, не был полным, поэтому ошибка не была бы точной из того, что я здесь представил. – mk7upurz87