使用ssm框架整合实现Java发送邮件需要先开启邮箱的smtp和pop3服务。实测开启第一个即可,如图
还需要导入一个javax.mail-1.6.2.jar包。
配置mail.properties
#服务器主机名 smtp.xx.com
mail.smtp.host=smtp.163.com
mail.smtp.username=xxx@163.com
#密码/客户端授权码,非邮箱登录密码
mail.smtp.password=XXXXXXXXX
#编码字符
mail.smtp.defaultEncoding=utf-8
#是否进行用户名密码校验
mail.smtp.auth=true
#设置超时时间
mail.smtp.timeout=20000
配置applicationContext.xml
<!--邮件配置-->
<context:property-placeholder location="classpath:mail.properties" ignore-unresolvable="true"/>
<!--配置邮件接口bean-->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.smtp.host}"/>
<property name="username" value="${mail.smtp.username}"/>
<property name="password" value="${mail.smtp.password}"/>
<property name="defaultEncoding" value="${mail.smtp.defaultEncoding}"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
</bean>
以上就完成了环境配置,接下来编写一个测试类,使用spring的junit测试。
package ts.test;
import java.io.File;
import java.util.Properties;
import javax.mail.internet.MimeMessage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
@PropertySource("classpath:mail.properties") //导入mail.properties
public class TestMail {
@Autowired
private JavaMailSender javaMailSender; //在spring中配置的邮件发送的bean
@Value("${mail.smtp.username}") //通过注解获取配置文件属性值
String from; //发件人邮箱
String to = "xxx@163.com"; //收件人邮箱
String subject = "由JavaMail发送"; //邮件主题
String text = "你好,这是一封来自SSM框架整合JavaMail的邮件"; //邮件正文
File file = new File("C:/Users/admin/Desktop/3.jpeg"); //发送一个文件
@Test
public void testSend() {
MimeMessage message = javaMailSender.createMimeMessage(); //创建邮件对象
MimeMessageHelper messageHelper; //处理MimeMessage的辅助类
try {
messageHelper = new MimeMessageHelper(message, true);
messageHelper.setFrom(from);
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(text,true); //true代表支持html格式
messageHelper.addAttachment(file.getName(), file); //以附件形式发送一个文件
javaMailSender.send(message);
System.out.println("success!");
}catch (Exception e) {
e.printStackTrace();
}
}
}
成功接收到发送的邮件