1

Magnolia CMS 4.5.4 のメール モジュールを使用してメールを送信しようとしています。私がこれまでに持っているコードは次のとおりです。

    protected void sendEmail(CommentDTO comment){
        if(comment!=null){
            try{
                MgnlMailFactory mailFactory = MailModule.getInstance().getFactory();
                if(mailFactory!=null){
                    Map<String, Object> params = new HashMap<String, Object>();


                    MgnlEmail mail = mailFactory.getEmailFromTemplate("MyTemplate", params);
                    mail.setToList("whoever@whatever.co.uk");
                    mail.setBody("HELLO");
                    mail.setFrom("whoever@whatever.co.uk");
                    if(mail!=null){
                        MgnlMailHandler mmh = mailFactory.getEmailHandler();
                        if(mmh!=null){
                            mmh.prepareAndSendMail(mail);
                        }
                    }
                }
            }catch(Exception e){

            }
        }
    }

私が得るログは次のとおりです。

2013-02-22 16:52:30,357 INFO  fo.magnolia.module.mail.handlers.SimpleMailHandler: Mail has been sent to: [2013-02-22 16:52:30,357 INFO  fo.magnolia.module.mail.handlers.SimpleMailHandler: Mail has been sent to: [whoever@whatever.co.uk]

でも一向にメールが来ない…

このトレースの前に、次のようになります。

2013-02-22 16:52:24,212 WARN  info.magnolia.cms.util.DeprecationUtil            : A deprecated class or method was used: Use IoC!. Check the following trace: info.magnolia.module.mail.MailModule.getInstance(MailModule.java:80), info.magnolia.module.mail.MgnlMailFactory.getEmailHandler(MgnlMailFactory.java:69), the full stracktrace will be logged in debug mode in the info.magnolia.cms.util.DeprecationUtil category.

Eclipse はメソッド MailModule.getInstance() を非推奨としてマークしますが、代わりに何を入れなければならないかわかりません。

誰かが私を助けることができますか?

ありがとう!

4

2 に答える 2

0

わかりました、私は最終的にこのコードでそれを解決します:

protected void sendEmail(CommentDTO comment){
    if(comment!=null){
        try{
            MgnlMailFactory mailFactory = MailModule.getInstance().getFactory();
            if(mailFactory!=null){
                Map<String, Object> params = new HashMap<String, Object>();
                params.put("articleName", comment.getArticleName());
                params.put("id", comment.getId() );
                params.put("commentText", comment.getComment());
                params.put("author", comment.getName());
                MgnlEmail mail = mailFactory.getEmailFromTemplate("myTemplate", params);
                mail.setBodyFromResourceFile();


                if(mail!=null){
                    MgnlMailHandler mmh = mailFactory.getEmailHandler();
                    if(mmh!=null){
                        mmh.prepareAndSendMail(mail);

                    }
                }
            }
        }catch(Exception e){
            log.error("Error sending email: " +e.getMessage());
        }
    }
}

私はそれがそれを機能させるのはこの行だったと思います:

mail.setBodyFromResourceFile();

そしてもちろん、SMTPサーバーの適切な構成。

于 2013-02-26T12:28:10.097 に答える
0

スローされた例外がないため、SMTP サーバーの構成が間違っているか、まったく構成されていないと思います。これを行う方法は、ここで読むことができます: http://documentation.magnolia-cms.com/modules/mail.html#ConfiguringSMTP

また、次のことを確認してください。

  • あなたのメールはどのスパム フィルターにも届きませんでした (メールボックスの外にある可能性があります)。
  • ブロックするファイアウォールはありません (例: localhost で実行している場合)
于 2013-02-26T11:30:04.883 に答える