Magnolia 邮件模块不起作用
Posted
技术标签:
【中文标题】Magnolia 邮件模块不起作用【英文标题】:Magnolia Mail Module Doesn't Work 【发布时间】:2013-02-22 17:01:35 【问题描述】:我正在尝试使用 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() 方法标记为已弃用,但我不知道必须改用什么。
有人可以帮助我吗?
谢谢!
【问题讨论】:
【参考方案1】:由于没有抛出异常,我猜你错误地配置了你的 SMTP 服务器或者根本没有。如何做到这一点可以在这里阅读:http://documentation.magnolia-cms.com/modules/mail.html#ConfiguringSMTP
另外,请确保:
您的邮件没有进入任何垃圾邮件过滤器(可能在您的邮箱之外) 没有阻止防火墙(例如在本地主机上运行时)【讨论】:
【参考方案2】:好的,我终于用这段代码解决了:
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 服务器的良好配置。
【讨论】:
以上是关于Magnolia 邮件模块不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Magnolia 5.4.1 CE 中的 HostBasedRegexpVirtualURIMapping 配置不起作用
使用 nodemailer 通过 Node.js 发送电子邮件不起作用
PasswordReset 在 WebMatrix 中不起作用