使用spring发送email,支持文件、html、txt等格式。
MailBean.java 发送email的格式类
/** * 本类是主要进行发送E-mail信息。 * @author Jerry * 如果是HTML :<html><head></head><body><h1>hello!!spring html Mail</h1><a href=\"http://www.sina.com\">超级链接</a></body></html> * 请加上http:// 否则URL会失效 */ public class MailBean { private String toEmail;//e-mail目的地 private String fromEmail;//e-mail来源地 private String emailTitle;//邮件标题 private String emailContent;//邮件正文 private File[] sendFiles;//添加附件 //相关配置在properties里 private PropertiesLoader propertiesLoder = new PropertiesLoader("ttcity.properties"); public MailBean(String toEmail, String emailTitle, String emailContent) { super(); this.toEmail = toEmail; this.fromEmail = propertiesLoder.getProperty("mail.username", "cuisongliu@163.com"); this.emailTitle = emailTitle; this.emailContent = emailContent; } public MailBean(String toEmail, String emailTitle, String emailContent, File[] sendFiles) { super(); this.toEmail = toEmail; this.fromEmail = propertiesLoder.getProperty("mail.username", "cuisongliu@163.com"); this.emailTitle = emailTitle; this.emailContent = emailContent; this.sendFiles = sendFiles; } public String getToEmail() { return toEmail; } public void setToEmail(String toEmail) { this.toEmail = toEmail; } public String getFromEmail() { return fromEmail; } @SuppressWarnings("unused") private void setFromEmail(String fromEmail) { this.fromEmail = fromEmail; } public String getEmailTitle() { return emailTitle; } public void setEmailTitle(String emailTitle) { this.emailTitle = emailTitle; } public String getEmailContent() { return emailContent; } public void setEmailContent(String emailContent) { this.emailContent = emailContent; } public File[] getSendFiles() { return sendFiles; } public void setSendFiles(File[] sendFiles) { this.sendFiles = sendFiles; } }
发送邮件接口
public interface SendMail { public JavaMailSender getJavaMailSender(); public MimeMessage getMimeMessage(); /** * 发送普通的email * @param mailBean Email的实体类 * @return true/false 发送成功/失败 * @throws BaseRuntimeException */ public boolean sendSingleMail(MailBean mailBean)throws IitdevRuntimeException; /** * 发送HTML格式的email * @param mailBean Email的实体类 * @return true/false 发送成功/失败 * @throws BaseRuntimeException */ public boolean sendHTMLMail(MailBean mailBean)throws IitdevRuntimeException; /** * 发送带附件的email * @param mailBean Email的实体类 * @return true/false 发送成功/失败 * @throws BaseRuntimeException */ public boolean sendAttachedFileMail (MailBean mailBean)throws IitdevRuntimeException; }
发送邮件的实现类
public class SendMailImpl implements SendMail { protected JavaMailSender javaMailSender; protected MimeMessage mimeMessage; private Logger log = Logger.getLogger(SendMailImpl.class); public JavaMailSender getJavaMailSender() { return javaMailSender; } public void setJavaMailSender(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; } public MimeMessage getMimeMessage() { return mimeMessage; } public void setMimeMessage(MimeMessage mimeMessage) { this.mimeMessage = mimeMessage; } @Override public boolean sendSingleMail(MailBean mailBean) throws IitdevRuntimeException { SimpleMailMessage mailMessage = new SimpleMailMessage(); try { mailMessage.setTo(mailBean.getToEmail()); mailMessage.setFrom(mailBean.getFromEmail()); mailMessage.setSubject(mailBean.getEmailTitle()); mailMessage.setText(mailBean.getEmailContent()); javaMailSender.send(mailMessage); } catch (Exception e) { log.error("发送失败", e); return false; } return true; } @Override public boolean sendHTMLMail(MailBean mailBean) throws IitdevRuntimeException { //MimeMessage mailMessage = javaMailSender.createMimeMessage(); // 设置utf-8或GBK编码,否则邮件会有乱码 MimeMessageHelper messageHelper = null; try { messageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8"); messageHelper.setTo(mailBean.getToEmail()); messageHelper.setFrom(mailBean.getFromEmail()); messageHelper.setSubject(mailBean.getEmailTitle()); // 邮件内容,注意加参数true,表示启用html格式 messageHelper.setText(mailBean.getEmailContent(), true); javaMailSender.send(mimeMessage); } catch (Exception e) { log.error("发送失败", e); return false; } return true; } @Override public boolean sendAttachedFileMail(MailBean mailBean) throws IitdevRuntimeException { //MimeMessage mailMessage = javaMailSender.createMimeMessage(); // 设置utf-8或GBK编码,否则邮件会有乱码 MimeMessageHelper messageHelper = null; try { messageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8"); messageHelper.setTo(mailBean.getToEmail()); messageHelper.setFrom(mailBean.getFromEmail()); messageHelper.setSubject(mailBean.getEmailTitle()); // 邮件内容,注意加参数true,表示启用html格式 messageHelper.setText(mailBean.getEmailContent(), true); // 遍历文件上传 for (File file : mailBean.getSendFiles()) { FileSystemResource fsr = new FileSystemResource(file); messageHelper.addAttachment(file.getName(), fsr); } javaMailSender.send(mimeMessage); } catch (Exception e) { log.error("发送失败", e); return false; } return true; } }
相关配置
<!-- e-amil设置 --> <bean id="mimeMessage" class="javax.mail.internet.MimeMessage" factory-bean="javaMailSender" factory-method="createMimeMessage" /> <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host"> <value>${mail.host}</value></property> <property name="username"> <value>${mail.username}</value></property> <property name="password"> <value>${mail.password}</value></property> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.timeout">25000</prop> <!-- <prop key="mail.smtp.port">25</prop> <prop key="mail.smtp.socketFactory.port">25</prop> <prop key="mail.smtp.socketFactory.fallback">false</prop> <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop> --> </props> </property> </bean> <bean id="sendMail" class="com.base.mail.SendMailImpl"> <property name="javaMailSender" ref="javaMailSender" /> <property name="mimeMessage" ref="mimeMessage" /> </bean>