04_邮箱发送邮件(主要面向qq邮箱)

JAVA学习网 2017-11-07 17:37:01

demo需求:

用java第三方调用邮箱(主要是qq邮箱)发送邮件给一方或多方

demo主要技术:

1.引入一个额外的jar包,javax.mail.jar,开启java操作邮箱的功能
2.Properties类的使用

demo主要代码展示:

/**
 * show 方法简介
 * 第三方调用邮箱(这里主要是qq邮箱)发送邮件给一方或多方,注意如果是qq邮箱必须开ssl加密
 * @author 叶灬黎
 * @param host 主机名,例:qq邮箱的host,"smtp.qq.com"
 * @param sender 发送人的邮箱 
 * @param nickname 发送人的昵称(随便取,别人收到邮件时看到的昵称)
 * @param password 密码,除qq邮箱是要去生成的随机码,暂时其他邮箱都是邮箱登录密码  
 * @param receivers 接收人的邮箱,可以一个,可以多个,存放在一个字符串数组中传递
 * @param subject 邮件主题(标题)
 * @param content 邮件内容   
 * @throws Exception
 */ 
 public static void sendMail(String host, String sender, String nickname, String password, String[] receivers,
        String subject, String content) throws Exception {
    Properties props = new Properties();

    // 开启debug调试
    props.setProperty("mail.debug", "true");
    // 发送服务器需要身份验证
    props.setProperty("mail.smtp.auth", "true");
    // 设置邮件服务器主机名
    props.setProperty("mail.host", host);
    // 发送邮件协议名称
    props.setProperty("mail.transport.protocol", "smtp");
    
    // 开启ssl加密,目前qq是要开的
    MailSSLSocketFactory sf = new MailSSLSocketFactory();
    sf.setTrustAllHosts(true);
    props.put("mail.smtp.ssl.enable", "true");
    props.put("mail.smtp.ssl.socketFactory", sf);

    Session session = Session.getInstance(props);

    // 定义邮件主题,内容,发件人
    Message msg = new MimeMessage(session);
    msg.setSubject(subject);
    StringBuilder builder = new StringBuilder();
    builder.append(content);
    msg.setText(builder.toString());
    msg.setFrom(new InternetAddress(sender, nickname, "UTF-8"));

    //传输连接,并发送
    Transport transport = session.getTransport();
    transport.connect(host, sender, password);
    Address[] address = new Address[receivers.length];
    for (int i = 0; i < receivers.length; i++) {
        address[i] = new InternetAddress(receivers[i]);
    }
    transport.sendMessage(msg, address);
    transport.close();
}

demo资源位置:

 svn://106.15.229.200/Javaweb/tinyDemo_mail,用户 temp/temp
阅读(748) 评论(0)