Spring發送帶附件郵件
下面是一個例子使用Spring通過Gmail SMTP服務器來發送電子郵件附件。爲了包含附件的電子郵件,你必須使用 Spring的JavaMailSender及MimeMessage 來代替 MailSender&SimpleMailMessage。
2.Spring的郵件發件人
必須使用 JavaMailSender 代替 MailSender 發送附件,並用 MimeMessageHelper 附加的資源。在這個例子中,它會得到 「c:\\log.txt」 從文件系統(FileSystemResource)作爲電子郵件附件的文本文件。
除了文件系統,您還可以從URL路徑(UrlResource對象),類路徑(使用ClassPathResource),InputStream(InputStreamResource)的任何資源......請參考 Spring 的 AbstractResource 類的實現。
File : MailMail.java
package com.yiibai.common;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.MailParseException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
public class MailMail
{
private JavaMailSender mailSender;
private SimpleMailMessage simpleMailMessage;
public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
this.simpleMailMessage = simpleMailMessage;
}
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public void sendMail(String dear, String content) {
MimeMessage message = mailSender.createMimeMessage();
try{
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(simpleMailMessage.getFrom());
helper.setTo(simpleMailMessage.getTo());
helper.setSubject(simpleMailMessage.getSubject());
helper.setText(String.format(
simpleMailMessage.getText(), dear, content));
FileSystemResource file = new FileSystemResource("C:\\\\log.txt");
helper.addAttachment(file.getFilename(), file);
}catch (MessagingException e) {
throw new MailParseException(e);
}
mailSender.send(message);
}
}
3. Bean配置文件
配置 mailSender bean,電子郵件模板,並指定Gmail的SMTP服務器電子郵件的詳細信息。
File : Spring-Mail.xml
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
</props>
</property>
<property name="from" value="[email protected]" />
<property name="to" value="[email protected]" />
<property name="subject" value="Testing Subject" />
<property name="text">
<value>
<!\[CDATA\[
Dear %s,
Mail Content : %s
\]\]>
</value>
</property>
4. 運行它
package com.yiibai.common;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
MailMail mm = (MailMail) context.getBean("mailMail");
mm.sendMail("Yiibai", "This is text content");
}
}
輸出結果
Dear Yiibai,
Mail Content : This is text content
Attachment : log.txt