2017-10-02 16 views
0

Note: Je suis nouveau à jouer cadre, s'il vous plaît pardonnez-moi pour toute erreur recrue.mailerclient non détecté par playframework

Infos Contexte:

Dans mon webapp, je fais usage de la fonctionnalité de messagerie, et cela se fait à l'aide du MailerClient fourni comme une bibliothèque de SBT.

MailerClient est pris en charge sur la page github this. J'utilise github comme référentiel git, car il s'agit d'un projet d'équipe.

J'ai d'abord créé le projet et l'ai poussé vers le référentiel, voici le début du problème.


Instructions pour Email Support (JAVA) (En tant que référence de mes pas prises)

Tout d'abord, pour permettre le soutien de courrier électronique pour Java, quelques étapes doivent être prises.

1. Ajouter SBT bibliothèque MailerClient

Ajouter les lignes

libraryDependencies += "com.typesafe.play" %% "play-mailer" % "6.0.1" 
libraryDependencies += "com.typesafe.play" %% "play-mailer-guice" % "6.0.1" 

au fichier projectRoot/build.sbt

2. Configurer MailerClient

Configurez ensuite les MailerClient ports, etc en le fichier projectRoot/conf/application.conf

exemple donné sur la page GitHub:

play.mailer { 
    host = "example.com" // (mandatory) 
    port = 25 // (defaults to 25) 
    ssl = no // (defaults to no) 
    tls = no // (defaults to no) 
    tlsRequired = no // (defaults to no) 
    user = null // (optional) 
    password = null // (optional) 
    debug = no // (defaults to no, to take effect you also need to set the log level to "DEBUG" for the application logger) 
    timeout = null // (defaults to 60s in milliseconds) 
    connectiontimeout = null // (defaults to 60s in milliseconds) 
    mock = no // (defaults to no, will only log all the email properties instead of sending an email) 
} 

est à moi au bas du fichier application.conf car il ne fait pas partie d'un autre préfixe d'arbre.

3. Passez à la balise Java Usage

4. A l'intérieur d'une classe (de votre choix), ajoutez le code:

@Inject 
MailerClient mailerClient; 

Au sein de cette classe, l'objet est instancié MailerClient et peut être utilisé pour envoyer des emails.

Avec l'exemple de la page Github, créez l'objet email:

String cid = "1234"; 
    Email email = new Email() 
     .setSubject("Simple email") 
     .setFrom("Mister FROM <[email protected]>") 
     .addTo("Miss TO <[email protected]>") 
     // adds attachment 
     .addAttachment("attachment.pdf", new File("/some/path/attachment.pdf")) 
     // adds inline attachment from byte array 
     .addAttachment("data.txt", "data".getBytes(), "text/plain", "Simple data", EmailAttachment.INLINE) 
     // adds cid attachment 
     .addAttachment("image.jpg", new File("/some/path/image.jpg"), cid) 
     // sends text, HTML or both... 
     .setBodyText("A text message") 
     .setBodyHtml("<html><body><p>An <b>html</b> message with cid <img src=\"cid:" + cid + "\"></p></body></html>"); 

ensuite envoyer l'e-mail en utilisant le mailerClient:

mailerClient.send(email); 

Problème:

Après avoir vérifié o dans ma branche (c.-à-d. il tire le projet webapp de github), PlayFramework n'a pas détecté le MailerClient.

Je peux confirmer que le fait MailerClient travail (a été détectée, instancié, envoie un courrier électronique, etc.) comme il l'a fait avant de pousser à github, et aucun changement n'a été fait depuis.

Pour clarifier, c'est un problème avec le plugin/bibliothèque n'étant pas détecté.

Vérification pour voir si elle existe réellement:

09:15:08 ✔ [email protected] ~/.ivy2 $ find | grep mailer 
./cache/com.typesafe.play/play-mailer_2.12 
./cache/com.typesafe.play/play-mailer_2.12/ivy-6.0.1.xml.original 
./cache/com.typesafe.play/play-mailer_2.12/ivydata-6.0.1.properties 
./cache/com.typesafe.play/play-mailer_2.12/ivy-6.0.1.xml 
./cache/com.typesafe.play/play-mailer_2.12/jars 
./cache/com.typesafe.play/play-mailer_2.12/jars/play-mailer_2.12-6.0.1.jar 
./cache/com.typesafe.play/play-mailer_2.12/srcs 
./cache/com.typesafe.play/play-mailer_2.12/srcs/play-mailer_2.12-6.0.1-sources.jar 
./cache/com.typesafe.play/play-mailer-guice_2.12 
./cache/com.typesafe.play/play-mailer-guice_2.12/ivy-6.0.1.xml.original 
./cache/com.typesafe.play/play-mailer-guice_2.12/ivydata-6.0.1.properties 
./cache/com.typesafe.play/play-mailer-guice_2.12/ivy-6.0.1.xml 
./cache/com.typesafe.play/play-mailer-guice_2.12/jars 
./cache/com.typesafe.play/play-mailer-guice_2.12/jars/play-mailer-guice_2.12-6.0.1.jar 
./cache/com.typesafe.play/play-mailer-guice_2.12/srcs 
./cache/com.typesafe.play/play-mailer-guice_2.12/srcs/play-mailer-guice_2.12-6.0.1-sources.jar 

Lors du lancement de l'outil de SBT, il ne résout les mailer plugin

//... 
[info] Resolving com.typesafe.play#play-mailer_2.12;6.0.1 ... 
[info] Resolving org.apache.commons#commons-email;1.5 ... 
[info] Resolving com.sun.mail#javax.mail;1.5.6 ... 
[info] Resolving javax.activation#activation;1.1 ... 
[info] Resolving com.typesafe.play#play-mailer-guice_2.12;6.0.1 ... 
//... 

Répondre

1

Quelques jours en arrière, je n'éprouvé le même problème. J'ai résolu mon problème en passant à la version précédente de l'expéditeur de jeu qui est 5.0.

est Ci-dessous l'exemple de travail

build.sbt

libraryDependencies +="com.typesafe.play" %% "play-mailer" % "5.0.0-M1" 

application.conf

play.mailer { 
    host="smtp.gmail.com" 
    port=465 
    ssl=yes 
    tls=no 
    user="[email protected]" 
    password="password" 
    debug=no 
    timeout=1000 
    connectiontimeout=1000 
    mock=no 
    // (defaults to no, will only log all the email properties instead of sending an email) 
} 

YourController.java

public class YourController extends Controller { 

private final MailerClient mailer ; 

    @Inject 
    public EventUser(MailerClient mailer) { 
     this.mailer = mailer; 
    } 

public Result Email() 
    { 
     sendMail("[email protected]"); 
     return ok("done"); 
    } 


private void sendMail(String userEmail) 
    { 

     Email email = new Email() 
       .setSubject("BLah Blah Messsage ") 
       .setFrom("") 
       .addTo(" <"+userEmail+">") 
       // adds attachment 
       .setBodyText("Please register to Event at "); 
     //.setBodyHtml("<html><body><p>An <b>html</b> message with cid <img src=\"cid:" + cid + "\"></p></body></html>"); 
     if(mailer!=null) 
      mailer.send(email); 
    } 

} 

routes

GET  /mail      controllers.YourController.Email