一、以QQ邮箱为例,开放smtp服务
1、登录邮箱,进入“设置”,选择“账户”,找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务”,开启“POP3/SMTP 服务”,
短信验证后获取“授权码”,该授权码可以生成不止一个。
2、项目下引入mail.jar,如果是maven项目,依赖如下:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.4</version>
</dependency>
3、ApplicationContext.xml中的配置:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="protocol" value="smtp" />
<property name="host" value="smtp.qq.com"/>
<!--<property name="port" value="25"></property>-->
<property name="username" value="你的邮箱@qq.com"/>
<property name="password" value="你的授权码"/>
<property name="defaultEncoding" value="utf-8"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.from">你的邮箱@qq.com</prop>
<prop key="mail.smtp.socketFactory.fallback">false</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.debug">true</prop>
</props>
</property>
</bean>
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from" value="你的邮箱@qq.com" />
<property name="subject" value="邮件主题" />
</bean>
4、发送邮件代码:
(1)全局属性:
@Resource(name = "mailSender")
private JavaMailSenderImpl mailSender;
@Resource(name = "simpleMailMessage")
private SimpleMailMessage simpleMailMessage;
(2)方法内代码:
try {
//创建邮件对象
MimeMessage message = mailSender.createMimeMessage();
//邮件助手
MimeMessageHelper helper = new MimeMessageHelper(message,true,"utf-8");
//发送方
helper.setFrom(simpleMailMessage.getFrom());
//接受方
helper.setTo(forgetMail);
//邮件标题
helper.setSubject(simpleMailMessage.getSubject());
//todo:链接中的&符号在QQ邮件正文中会显示&不影响使用,但是有点影响阅读
//网易邮箱正常显示
String hrefString = request.getScheme()+"://"+request.getServerName()
+":"+request.getLocalPort()
+request.getSession().getServletContext().getContextPath()
+"链接地址?email="+邮箱号+"&time="+System.currentTimeMillis()+"&page="+page;
//邮件内容
helper.setText("邮件内容,可以拼接html标签,即hrefString”。",true);
//发送邮件
mailSender.send(message);
prompt = new Prompt(1,"邮件已发送,请登录您的邮箱重置密码!");
} catch (MessagingException e) {
prompt = new Prompt(3,"邮箱不存在?未知错误,联系管理员吧。");
e.printStackTrace();
}
以上,欢迎加QQ1005113939交流,请各位大佬多多指教。