package controllers;
import com.feth.play.module.mail.Mailer;
import com.feth.play.module.mail.Mailer.Mail.Attachment;
import com.feth.play.module.mail.Mailer.Mail.Body;
import java.io.File;
import org.apache.commons.mail.EmailAttachment;
import play.data.Form;
import play.data.validation.Constraints.Email;
import play.data.validation.Constraints.Required;
import play.mvc.*;
import play.Play;
import views.html.index;
import static play.data.Form.form;
public class Application extends Controller {
    public static class MailMe {
        @Email
        @Required
        public String email;
    }
    private static final Form<MailMe> FORM = form(MailMe.class);
    public static Result index() {
        return ok(index.render(FORM));
    }
    public static Result sendMail() {
        final Form<MailMe> filledForm = FORM.bindFromRequest();
        if (filledForm.hasErrors()) {
            return badRequest(index.render(filledForm));
        } else {
            final String email = filledForm.get().email;
            final Body body = new Body(
                    views.txt.email.body.render().toString(),
                    views.html.email.body.render().toString()
            );
            final Mailer defaultMailer = Mailer.getDefaultMailer();
            {
                // simple usage
                defaultMailer.sendMail("play-easymail | it works!", body, email);
            }
            {
                // advanced usage
                final Mailer.Mail customMail = new Mailer.Mail("play-easymail | advanced", body, new String[]{ email });
                customMail.addCustomHeader("Reply-To", email);
                customMail.addAttachment(new Attachment("attachment.pdf", Play.application().getFile("conf/sample.pdf")));
                byte[] data = "data".getBytes();
                customMail.addAttachment(new Attachment("data.txt", data, "text/plain", "A simple file", EmailAttachment.INLINE));
                defaultMailer.sendMail(customMail);
            }
            flash("message", "2 mails to '" + email + "' have been sent successfully!");
            return redirect(routes.Application.index());
        }
    }
}