java通过SMTP发送QQ邮件的完全步骤

来源:互联网 发布:cadence软件仿真教程 编辑:程序博客网 时间:2024/06/05 20:20

首先,我们需要打开QQ邮箱的SMTP服务,因为QQ邮箱对于一般的用户都是默认关闭SMTP服务的。

  1. 打开QQ邮箱,点击设置
    打开QQ邮箱,点击设置
  2. 点击帐户
    账户
  3. 找到SMTP服务,默认关闭,点击开启,验证后给出一个用于使用SMTP的16位授权码,此处这个口令一定牢记。
    POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

代码前准备:
要使用Java的邮箱功能需要activation.jar和mail.jar包

package cn.itcast.shop.utils;import java.security.Security;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.Message.RecipientType;import javax.mail.MessagingException;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;/** * 邮件发送工具类 * @author Administrator * */public class MailUtils {    /**     * 发送邮件     * @param to    :收件人     * @param code  :激活码     */    public static void sendMail(String to,String code){        /**         * 1、获得一个Session对象;         * 2、创建一个代表邮件的对象Message;         * 3、发送邮件Transport对象。         *///      创建Properties类用于记录邮箱的一些属性        Properties props = new Properties();//      设置发送邮件的主机:此处填写SMTP发件服务器        props.setProperty("mail.smtp.host", "smtp.qq.com");//      端口号,QQ邮箱给出了两个端口        props.put("mail.smtp.port", "587");//      表示SMTP发送邮件,必须进行身份验证        props.put("mail.smtp.auth", "true");//      获得连接对象Session:javax.mail.Session        Session session = Session.getInstance(props, new Authenticator(){            @Override            protected PasswordAuthentication getPasswordAuthentication() {//              发送邮件服务器邮箱账号、密码(此密码是QQ邮箱给的16位授权码)                return new PasswordAuthentication("******@qq.com","16位授权码");            }        });//      创建邮件消息对象        Message message = new MimeMessage(session);        try {//          设置发件人            message.setFrom(new InternetAddress("2311239756@qq.com"));//          设置收件人TO,(抄送CC,密送BCC)            message.addRecipient(RecipientType.TO, new InternetAddress(to));//          设置标题            message.setSubject("激活邮件");//          设置邮件内容            message.setContent("邮件内容","text/html;charset=UTF-8");//          发送邮件            Transport.send(message);        } catch (AddressException e) {            e.printStackTrace();        } catch (MessagingException e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        sendMail("接收邮件的邮箱@qq.com", "激活码用于用户注册");    }}
1 0