首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magnolia邮件模块无法工作

Magnolia邮件模块无法工作
EN

Stack Overflow用户
提问于 2013-02-23 01:01:35
回答 2查看 1K关注 0票数 1

我正在尝试使用Magnolia CMS 4.5.4中的邮件模块发送电子邮件。到目前为止,我拥有的代码是:

代码语言:javascript
复制
    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){

            }
        }
    }

我得到的日志是:

代码语言:javascript
复制
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]

但是电子邮件从来没有来过。

在此跟踪之前,我得到:

代码语言:javascript
复制
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()方法标记为已弃用,但我不知道必须放入什么内容。

有人能帮帮我吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-26 20:28:10

好了,我终于用下面的代码解决了这个问题:

代码语言:javascript
复制
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());
        }
    }
}

我认为它的工作原理是这样的:

代码语言:javascript
复制
mail.setBodyFromResourceFile();

当然,还有SMTP服务器的良好配置。

票数 0
EN

Stack Overflow用户

发布于 2013-02-26 19:30:05

由于没有抛出异常,我猜您错误地配置了SMTP服务器,或者根本没有配置。如何做到这一点可以在这里阅读:http://documentation.magnolia-cms.com/modules/mail.html#ConfiguringSMTP

另外,请确保:

  • 您的邮件未进入任何垃圾邮件过滤器(可能在您的邮箱之外)
  • 没有阻止防火墙(例如,在本地主机上运行时)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15029418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档