Servlet后台发送邮件

此情况适用于何处?

一般注册的时候都有邮箱验证,本来想使用短信接口的,但是要钱啊,无奈转而使用邮件系统了


首先你需要两个支持邮件所需的jar 包:http://download.csdn.net/detail/u011871921/7545977


2.新建一个Servlet,我的叫MailServlet。下面直接附源码了:

package com.sencloud.img;

import java.io.IOException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/MailServlet" )
public class MailServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public MailServlet() {
          super();
    }

    protected void doGet(HttpServletRequest request,
             HttpServletResponse response) throws ServletException, IOException {
         doPost(request, response);
    }

    protected void doPost(HttpServletRequest request,
             HttpServletResponse response) throws ServletException, IOException {
         //收件人
         String To = "110@qq.com";
         //发件人
         String From = "120@qq.com";
         //邮件主题
         String subject = "test email";
          //邮件内容
         String body = "我是一个测试邮件" ;
          //发件人的QQ,注意此处千万不要加“@qq.com”
          final String mailbox_username="110" ;
          //发件人的QQ密码
          final String mailbox_password="password";
          try {
             Properties props = new Properties();// 创建一个Properties的实例
             props.put( "mail.smtp.host", "smtp.qq.com");// 设置发信服务器
             props.put( "mail.smtp.auth", "true" );// 要经过身份验证

             Session session = Session.getInstance(props,new Authenticator() {
                protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
                    return new javax.mail.PasswordAuthentication(mailbox_username,
                           mailbox_password);
                }
            });

             MimeMessage message = new MimeMessage(session);// 得到MimeMessage的实例
             message.setFrom( new InternetAddress(From));// 设置发件人
             
             message.addRecipients(Message.RecipientType. TO,InternetAddress.parse(To)); // 设置收件人,可以同时指定多个收件人
             message.setSubject(subject); // 设置邮件的主题
             message.setSentDate( new Date());
             message.setText(body); // 设置邮件的内容文本
             Transport transport = session.getTransport("smtp" );// 得到Transport类的一个实例
             transport.connect( "smtp.qq.com",mailbox_username,mailbox_password); // 连接发信服务器
             transport.sendMessage(message, message.getAllRecipients());// 发送邮件
             System. out.println("邮件发送成功" );
             transport.close(); // 发送之后关闭
         } catch (AddressException e) {
             e.printStackTrace();
         } catch (NoSuchProviderException e) {
             e.printStackTrace();
         } catch (MessagingException e) {
             e.printStackTrace();
         }
    }
}


4.有时候运行报这样的错 javax.mail.AuthenticationFailedException ,clean一下工程吧。
5.基本完成,有什么问题请留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值