使用spring發送郵件,主要還是在實現org.springframework.mail.javamail.JavaMailSender這個接口,在借助于IoC的情況下我們可以通過配置來實現.
1 <bean id="mailsender"
2 class="org.springframework.mail.javamail.JavaMailSenderImpl">
3 <property name="host">
4 <value>smtp.gmail.com</value>
5 </property>
6 <property name="javaMailProperties">
7 <props>
8 <prop key="mail.smtp.auth">true</prop>
9 <prop key="mail.smtp.timeout">25000</prop>
10 <prop key="mail.smtp.starttls.enable">true</prop>
11 <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory </prop>
12 <prop key="mail.smtp.socketFactory.fallback">false</prop>
13 </props>
14 </property>
15 <property name="port">
16 <value>465</value>
17 </property>
18 <property name="username">
19 <value>username@gmail.com</value>
20 </property>
21 <property name="password">
22 <value>password</value>
23 </property>
24 </bean>
我們創建一個mail的服務,上面配置用戶名處和密碼根據需要修改,主要關鍵是因為gmail必須要SSL認證,所以在10到12行寫了SSL的配置,由于只是簡單應用我就不需要寫接口什么的了
package kafei.time;
public class MailService {
private JavaMailSender mailSender;
public FeedbackService() {}
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public void send() {
//創建一個多媒體的郵件
MimeMessage me=mailSender.createMimeMessage();
MimeMessageHelper message=new MimeMessageHelper(me,true);
message.setTo("user@gmail.com");
message.setSubject("test");
message.setText("這是一個測試");
FileSystemResource img=new FileSystemResource(
new File("E:\\workspace\\founder\\src\\kafeitime.jpg"));
message.addInline("png", img);
//message.addAttachment("png",img); //將文件作為附件發送
mailsender.send(me);
System.out.println("郵件發送成功");
}
}
這樣就可以了
下面在bean的配置文件中再寫入
<bean id="mailService"
class="kafei.time.MailService">
<property name="mailSender">
<ref bean="mailSender" />
</property>
</bean>
最后就是做一個測試文件了
public class MailTest {
public static void main(String[] args) {
Resource rs =
new FileSystemResource("beans-config.xml");
BeanFactory factory =
new XmlBeanFactory(rs);
kafei.time.MailService mailservice =
(HelloBean) factory.getBean("mailService");
mailservice.send();
}
}
這個例子我測試成功過,不過有可能在寫的時候導致一些錯誤,請有疑問的朋友留言