天天看点

Spring 发送邮件

这是很久之前的代码了,最近需要使用了,了就记录一下。

maven:

<code>&lt;</code><code>dependency</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>groupId</code><code>&gt;com.sun.mail&lt;/</code><code>groupId</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>artifactId</code><code>&gt;javax.mail&lt;/</code><code>artifactId</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>version</code><code>&gt;1.5.5&lt;/</code><code>version</code><code>&gt;</code>

<code>&lt;/</code><code>dependency</code><code>&gt;</code>

spring配置:

<code>&lt;!-- 邮件 --&gt;</code>

<code>&lt;</code><code>bean</code> <code>id</code><code>=</code><code>"baojingMailSender"</code> <code>class</code><code>=</code><code>"org.springframework.mail.javamail.JavaMailSenderImpl"</code><code>&gt;</code>

<code>    </code><code>&lt;!-- 服务器 --&gt;</code>

<code>    </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"host"</code> <code>value</code><code>=</code><code>"#{configproperties['baojing.mail.host']}"</code> <code>/&gt;</code>

<code>    </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"protocol"</code> <code>value</code><code>=</code><code>"#{configproperties['baojing.mail.protocol']}"</code><code>&gt;&lt;/</code><code>property</code><code>&gt;</code>

<code>    </code><code>&lt;!-- 端口号 --&gt;</code>

<code>    </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"port"</code> <code>value</code><code>=</code><code>"#{configproperties['baojing.mail.port']}"</code> <code>/&gt;</code>

<code>    </code><code>&lt;!-- 用户名 --&gt;</code>

<code>    </code><code>&lt;!-- &lt;property name="username" value="#{configproperties['baojing.mail.username']}" /&gt; --&gt;</code>

<code>    </code><code>&lt;!-- 密码 --&gt;</code>

<code>    </code><code>&lt;!-- &lt;property name="password" value="#{configproperties['baojing.mail.password']}" /&gt; --&gt;</code>

<code>    </code><code>&lt;!-- SMTP服务器验证 --&gt;</code>

<code>    </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"javaMailProperties"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>props</code><code>&gt;</code>

<code>            </code><code>&lt;!-- 验证身份 --&gt;</code>

<code>            </code><code>&lt;</code><code>prop</code> <code>key</code><code>=</code><code>"mail.smtp.auth"</code><code>&gt;{configproperties['baojing.mail.smtp.auth']}&lt;/</code><code>prop</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>prop</code> <code>key</code><code>=</code><code>"mail.smtp.timeout"</code><code>&gt;#{configproperties['baojing.mail.smtp.timeout']}&lt;/</code><code>prop</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>props</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;/</code><code>bean</code><code>&gt;</code>

配置:

<code>baojing.mail.host      = mail2-</code><code>in</code><code>.XXXX.com</code>

<code>baojing.mail.port      = 25</code>

<code>baojing.mail.protocol  = smtp</code>

<code>baojing.mail.username  = </code><code>""</code>

<code>baojing.mail.password   = </code><code>""</code>

<code>baojing.mail.smtp.auth  = </code><code>false</code>

<code>baojing.mail.smtp.timeout = 25000</code>

代码:

<code>@Autowired</code>

<code>@Qualifier</code><code>(value=</code><code>"baojingMailSender"</code><code>)</code>

<code>private</code> <code>JavaMailSender baojingMailSender;</code>

<code>/**</code>

<code> </code><code>* 发邮件</code>

<code> </code><code>* **/</code>

<code>@SuppressWarnings</code><code>(</code><code>"static-access"</code><code>)</code>

<code>public</code> <code>void</code> <code>sendMail(</code><code>final</code> <code>Map&lt;String, Map&lt;String, String&gt;&gt; message){</code>

<code>    </code><code>Map&lt;String, String&gt; dayDiffMap = message.get(</code><code>"day"</code><code>);</code>

<code>    </code><code>Map&lt;String, String&gt; hourDiffMap = message.get(</code><code>"hour"</code><code>);</code>

<code>    </code><code>Map&lt;String, String&gt;  defaultMap = </code><code>new</code> <code>HashMap&lt;String, String&gt;();</code>

<code>    </code><code>defaultMap.put(</code><code>"ratio"</code><code>, </code><code>"0"</code><code>);</code>

<code>    </code><code>defaultMap.put(</code><code>"diffCount"</code><code>, </code><code>"0"</code><code>);</code>

<code>    </code><code>defaultMap.put(</code><code>"totleCount"</code><code>, </code><code>"0"</code><code>);</code>

<code>    </code><code>defaultMap.put(</code><code>"todayFile"</code><code>, </code><code>"0"</code><code>);</code>

<code>    </code><code>defaultMap.put(</code><code>"diffFile"</code><code>, </code><code>"0"</code><code>);</code>

<code>    </code><code>//避免空指向</code>

<code>    </code><code>if</code> <code>(dayDiffMap == </code><code>null</code> <code>|| dayDiffMap.isEmpty()) {</code>

<code>        </code><code>dayDiffMap = defaultMap;</code>

<code>    </code><code>}</code>

<code>    </code><code>if</code> <code>(hourDiffMap == </code><code>null</code> <code>|| hourDiffMap.isEmpty() ) {</code>

<code>        </code><code>hourDiffMap = defaultMap;</code>

<code>    </code> 

<code>    </code><code>if</code> <code>(VoiceConstans.isSendMail &amp;&amp; (Double.valueOf(dayDiffMap.get(</code><code>"ratio"</code><code>)) &gt;= VoiceConstans.dayThreshold ||</code>

<code>            </code><code>Double.valueOf(hourDiffMap.get(</code><code>"ratio"</code><code>)) &gt;= VoiceConstans.hourThreshold)) {</code>

<code>        </code><code>String dayRatio =  </code><code>new</code> <code>String().format(</code><code>"%.2f"</code><code>, (Double.valueOf(dayDiffMap.get(</code><code>"ratio"</code><code>)) *</code><code>100</code><code>)) + </code><code>"%"</code><code>;</code>

<code>        </code><code>String hourRatio =  </code><code>new</code> <code>String().format(</code><code>"%.2f"</code><code>, (Double.valueOf(hourDiffMap.get(</code><code>"ratio"</code><code>)) *</code><code>100</code><code>)) + </code><code>"%"</code><code>;</code>

<code>        </code><code>try</code> <code>{</code>

<code>            </code><code>//HTML</code>

<code>            </code><code>MimeMessage mimeMessage = baojingMailSender.createMimeMessage();</code>

<code>            </code><code>MimeMessageHelper messageHelper = </code><code>new</code> <code>MimeMessageHelper(mimeMessage, </code><code>true</code><code>, </code><code>"utf-8"</code><code>);</code>

<code>        </code> 

<code>            </code><code>String [] mailto = </code><code>new</code> <code>String[VoiceConstans.mailTo.size()]; </code>

<code>            </code><code>messageHelper.setTo(VoiceConstans.mailTo.toArray(mailto));</code>

<code>            </code><code>messageHelper.setFrom(VoiceConstans.mailFrom);</code>

<code>            </code><code>messageHelper.setSubject(VoiceConstans.mailSubject+</code><code>" ("</code><code>+DateUtil.format(</code><code>new</code> <code>Date(), VoiceConstans.HOURFORMAT)+</code><code>")"</code><code>);</code>

<code>            </code><code>StringBuffer htmlBuffer = </code><code>new</code> <code>StringBuffer();</code>

<code>            </code><code>htmlBuffer.append(</code><code>"HI,ALL:&lt;br&gt;"</code><code>);</code>

<code>            </code><code>htmlBuffer.append(DateUtil.format(</code><code>new</code> <code>Date(), </code><code>"yyyy-MM-dd HH时"</code><code>));</code>

<code>            </code><code>htmlBuffer.append(</code><code>"数据如下:&lt;br&gt;"</code><code>);</code>

<code>            </code><code>htmlBuffer.append(</code><code>"总数:"</code><code>+dayDiffMap.get(</code><code>"totleCount"</code><code>)+</code><code>"&lt;br&gt;"</code><code>);</code>

<code>            </code><code>htmlBuffer.append(</code><code>"&lt;table border=\"1\"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;同日DIFF数&lt;/th&gt;&lt;th&gt;同日比&lt;/th&gt;&lt;th&gt;相邻DIFF数&lt;/th&gt;&lt;th&gt;相邻比&lt;/th&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;"</code><code>);</code>

<code>            </code><code>htmlBuffer.append(</code><code>"&lt;td&gt;"</code><code>+dayDiffMap.get(</code><code>"diffCount"</code><code>)+</code><code>"&lt;/td&gt;"</code><code>);</code><code>//同日当前diff数</code>

<code>            </code><code>htmlBuffer.append(</code><code>"&lt;td&gt;"</code><code>+dayRatio+</code><code>"&lt;/td&gt;"</code><code>);</code><code>//同日比</code>

<code>            </code><code>htmlBuffer.append(</code><code>"&lt;td&gt;"</code><code>+hourDiffMap.get(</code><code>"diffCount"</code><code>)+</code><code>"&lt;/td&gt;"</code><code>);</code><code>//相邻当前diff数</code>

<code>            </code><code>htmlBuffer.append(</code><code>"&lt;td&gt;"</code><code>+hourRatio+</code><code>"&lt;/td&gt;"</code><code>);</code><code>//相邻比</code>

<code>            </code><code>htmlBuffer.append(</code><code>"&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;br&gt;"</code><code>);</code>

<code>            </code><code>LOGGER.info(</code><code>"发邮件: "</code><code>+ htmlBuffer.toString());</code>

<code>            </code><code>messageHelper.setText(htmlBuffer.toString(),</code><code>true</code><code>);   </code>

<code>            </code><code>baojingMailSender.send(mimeMessage);</code>

<code>        </code><code>} </code><code>catch</code> <code>(MessagingException e) {</code>

<code>            </code><code>e.printStackTrace();</code>

<code>        </code><code>}</code>

<code>}</code>

版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任

本文转自 梦朝思夕 51CTO博客,原文链接:http://blog.51cto.com/qiangmzsx/1859044