现在的位置: 首页 > 综合 > 正文

通过spring发送邮件

2018年05月01日 ⁄ 综合 ⁄ 共 2912字 ⁄ 字号 评论关闭
文章目录

springapplicationContext.xml中配置

Spring提供了JavaMailSenderImpl这个类来发送邮件

<!-- 发邮件,也可以把下面的value中的值写入属性文件中,然后导入进来 -->

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">

<property name="host" value="smtp.sina.com"/>

<property name="javaMailProperties">

<props>

<prop key="mail.smtp.auth">true</prop>

</props>

</property>

<property name="username" value="hwt_211"/>

<property name="password" value="wentao211()"/>

</bean>

<!--还可以设置message-->

<!--<bean id="message" class="org.springframework.mail.SimpleMailMessage">

<property name="from" vlaue=""/>

<property name="cc" value=""/>

<property name="sentDate" value=""/>

....

</bean>-->

实现类中

//要记得在spring的配置文件中注入这个对象

private JavaMailSenderImpl mailSender ;

public boolean sendMail(String pathString) throws AddressException, UnsupportedEncodingException, MessagingException{

 MimeMessage message = mailSender.createMimeMessage();

 message.setSubject("带有附件和图片的复杂形式的邮件");

   message.setSentDate(new Date());//设置发送时间

 message.setFrom(new InternetAddress(MimeUtility.encodeText("黄文韬")+" <hwt_211@sina.com>"));

 message.setReplyTo(new Address[]{new InternetAddress(MimeUtility.encodeText("黄林")+" <hwt_211@sina.com>")});

 InternetAddress to = new InternetAddress(MimeUtility.encodeText("黄林")+" <hwt_211@qq.com>");

 message.setRecipient(RecipientType.TO, to);

 //因为这封邮件包括附件和正文(html和图片),所以是一种混合模式的

 Multipart msgMultipart = new MimeMultipart("mixed");

 message.setContent(msgMultipart);//和message建立关系

 

 MimeBodyPart attach1 = new MimeBodyPart();

 MimeBodyPart attach2 = new MimeBodyPart();

 MimeBodyPart content = new MimeBodyPart();

 msgMultipart.addBodyPart(attach1);

 msgMultipart.addBodyPart(attach2);

 msgMultipart.addBodyPart(content);

 

 //对附件1的操作

 DataSource ds1 = new FileDataSource(pathString+"/Java培训.txt"); //相对路径

 DataHandler dh1 = new DataHandler(ds1);

 attach1.setDataHandler(dh1);

 attach1.setFileName(MimeUtility.encodeText("java培训.txt"));//对于附件一定要记得设置文件的名字

 

 //对附件2的操作

 DataSource ds2 = new FileDataSource(pathString+"/slogo.gif"); 

 DataHandler dh2 = new DataHandler(ds2);

 attach2.setDataHandler(dh2);

 attach2.setFileName(MimeUtility.encodeText("slogo.gif"));

 

 //对正文的操作

 Multipart bodyContent = new MimeMultipart("related");

 content.setContent(bodyContent);//和content建立关系

 MimeBodyPart htmlPart = new MimeBodyPart();

 MimeBodyPart imgPart = new MimeBodyPart();

 bodyContent.addBodyPart(htmlPart);

 bodyContent.addBodyPart(imgPart);

 

 //对于正文中的img部分的操作

 DataSource imgds = new FileDataSource(pathString+"/logo.gif");

 DataHandler imgDh = new DataHandler(imgds);

 imgPart.setDataHandler(imgDh);

 imgPart.setHeader("Content-Location""www.hwt_211.com");

 

 //对于html部分的操作

 htmlPart.setContent("韬哥哥现在可以用代码发邮件了,牛逼不?<img src='www.hwt_211.com'/>","text/html;charset=gbk");

 

 message.saveChanges();//邮件编写完毕

message.saveChanges();

 try {

 mailSender.send(message);

 return true;

catch (Exception e) {

return false;

}

 

}

public void setMailSender(JavaMailSenderImpl mailSender) {

this.mailSender = mailSender;

}

【上篇】
【下篇】

抱歉!评论已关闭.