javascript
跟踪异常–第4部分– Spring的邮件发件人
如果您閱讀過本系列以前的任何博客,您可能會記得我正在開發一個小型但幾乎具有工業實力的應用程序,該應用程序在日志文件中搜索異常。 您可能還記得,我現在有一個可以包含一堆結果的類,需要將其發送給感興趣的任何人。 這將通過實現下面顯示的簡單Publisher界面來完成。
如果您還記得,那么要求是:
7 . Publish the report using email or some other technique.在此博客中,我要處理需求的具體部分:通過電子郵件發送報告。 由于這是Spring應用程序,因此發送電子郵件的最簡單方法是使用Spring的電子郵件類。 與Spring API的堅強后盾(模板類,例如JdbcTemplate和JmsTemplate)不同,Spring電子郵件類基于兩個接口及其實現。 這些接口是:
……實現是:
請注意,這些是“基本”類; 您可以使用諸如MimeMailMessage,MimeMailMessageHelper,ConfigurableMimeFileTypeMap和MimeMessagePreparator之類的類發送美觀,更復雜的電子郵件內容。
在編寫一些代碼之前,幾乎沒有什么項目配置問題。 要使用Spring電子郵件類,您需要在Maven POM文件中輸入以下內容:
<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4</version> </dependency>這樣可以確保基礎Java Mail類可用于您的應用程序。
一旦在構建中配置了Java Mail類,接下來要做的就是設置Spring XML配置。
<!-- Spring mail configuration --><bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host" value="${mail.smtp.host}"/></bean><!-- this is a template message that we can pre-load with default state --><bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage"><property name="to" value="${mail.to}"></property><property name="from" value="${mail.from}"/><property name="subject" value="${mail.subject}"/></bean>對于這個應用程序,這是發出自動報告的目的,我已經包括了兩個彈簧豆: mailSender和mailMessage 。 mailSender是一個JavaMailSenderImpl實例,配置為使用特定的SMTP郵件服務器,并將所有其他屬性(例如TCP端口)保留為默認值。
第二個春天bean是mailMessage ,實例SimpleMailMessage 。 這次,我已經預配置了三個屬性:“至”,“來自”和“主題”。 這是因為,作為自動消息,這些值始終相同。
當然,您可以以編程方式配置這些,如果您要創建郵件GUI,則可能需要做一些事情。
所有這些XML使得Publisher的實現非常簡單。
@Service public class EmailPublisher implements Publisher { private static final Logger logger = LoggerFactory.getLogger(EmailPublisher.class); @Autowired private MailSender mailSender; @Autowired private SimpleMailMessage mailMessage; @Override public <T> boolean publish(T report) { logger.debug("Sending report by email..."); boolean retVal = false; try { String message = (String) report; mailMessage.setText(message); mailSender.send(mailMessage); retVal = true; } catch (Exception e) { logger.error("Can't send email... " + e.getMessage(), e); } return retVal; } }Publisher類包含一個方法: publish ,它采用通用參數T report 。 正如我之前所說,此類型必須與我以前的博客中Formatter實現返回的參數類型相同。
此代碼中實際上只需要考慮三個步驟:首先,將泛型T強制轉換為String (如果參數T report不是String ,這將全部轉換為String 。
第二步是將電子郵件的正文附加到mailMessage ,然后發送使用消息mailSender.send(…)
最后一步是通過返回true來履行Publisher合同,除非電子郵件發送失敗,在這種情況下,將記錄異常并且返回值為false 。
在開發相關代碼方面。 下一步是整理計劃,以便按時生成報告,但稍后會更多……
- 該博客的代碼可在Github上找到: https : //github.com/roghughe/captaindebug/tree/master/error-track 。
如果您想查看本系列中的其他博客,請在這里看……
翻譯自: https://www.javacodegeeks.com/2014/04/tracking-exceptions-part-4-springs-mail-sender.html
總結
以上是生活随笔為你收集整理的跟踪异常–第4部分– Spring的邮件发件人的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux目录权限是drwxr—r-x(
- 下一篇: 从javaagent迁移到JVMTI:我