Java 实现QQ邮件发送过程

                                                 JAVA 实现发送QQ邮件

一:首先要了解邮件发送的一些基本概念:

1.1、邮件服务器和电子邮箱

  要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器。例如现在Internet很多提供邮件服务的厂商:sina、sohu、163等等他们都有自己的邮件服务器。

  这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。

  电子邮箱(E-Mail地址)的获得需要在邮件服务器上进行申请,确切地说,电子邮箱其实就是用户在邮件服务器上申请的一个账户,用户在邮件服务器上申请了一个帐号后,邮件服务器就会为这个账号分配一定的空间,用户从而可以使用这个帐号以及空间发送电子邮件和保存别人发送过来的电子邮件。

1.2、邮件传输协议

1.2.1、SMTP协议

  用户连接上邮件服务器之后,要想给它发送一封电子邮件,需要遵循一定的通讯规则,SMTP协议就是用来定义这种通讯规则的。因此,我们通常也把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

1.2.2、POP3协议

  同样,用户若想从邮件服务器管理的电子邮箱当中接收一封电子邮件话,它连上邮件服务器后,也要遵循一定的通讯格式,POP3协议就是用来定义这种通讯格式的。因此,我们通常也把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。

1.3、电子邮件的发送和接收过程:

通过一张图清晰了解:

涉及到一些smtp协议和POP3协议看参看:http://www.cnblogs.com/xdp-gacl/p/4209586.html这位大神的博客,总结的非常的好。

                     下面就来说如何通过java发送QQ邮件;

 首先:1:你先有QQ邮箱吧,这就不必说了吧。

2:打开QQ邮箱拿到SMTP的16位口令吧:过程如下:

打开QQ邮箱,点击设置


接下来--->Java 实现QQ邮件发送过程_第1张图片

找到SMTP服务的选项,可以看到此处默认是关闭的,点击开启,然后腾讯会进行一些身份验证,身份验证通过以后,腾讯会给出一个用于使用SMTP的16位口令,此处这个口令一定牢记,因为后面要使用SMTP功能必须要用到这个口令,没有这个口令即使知道QQ邮箱密码也没有用,此处未给出口令的截图,毕竟为了隐私保密,不然大家都可以登录使用我的QQ邮箱SMTP服务了。后面我们将该口令记为SMTP口令。

Java 实现QQ邮件发送过程_第2张图片

按照要求发送短信拿到QQ邮箱的SMTP服务器的16位口令,这里说一下:这个16位的口令每个四位就有空个在最后输入的时候要去掉的,否则发送失败的呦!!!!!

   来看源代码的吧:

首先新建一个Java Project 在这个工程下建一个lib放入mail.jar包。这个jar包就自己下吧,很好找的呦。

在src下建包,建类就不说了吧。

源代码如下:

package com.lx.mail;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

/**
 *
 * 测试发送邮件
 */
public class Mail {
    public static void main(String[] args) throws MessagingException {
        //创建Properties 类用于记录邮箱的一些属性
        final Properties props = new Properties();
        // 表示SMTP发送邮件,必须进行身份验证
        props.put("mail.smtp.auth", "true");
        //此处填写SMTP服务器
        props.put("mail.smtp.host", "smtp.qq.com");
        //端口号,QQ邮箱给出了两个端口,但是另一个465一直使用不了,用了就是程序假死的发送失败的,,,所以就给出这一个587。,端口的问题在下面介绍。
        props.put("mail.smtp.port", "587");
        // 此处填写你的账号
        props.put("mail.user", "[email protected]");
        // 此处的密码就是前面说的16位STMP口令
        props.put("mail.password", "xxxxxxxxxxxxxxxx");//这里要去掉从QQ邮箱中得到的16位口令中间空格的。
        // 构建授权信息,用于进行SMTP进行身份验证
        Authenticator authenticator = new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                // 用户名、密码
                String userName = props.getProperty("mail.user");
                String password = props.getProperty("mail.password");
                return new PasswordAuthentication(userName, password);
            }
        };
        // 使用环境属性和授权信息,创建邮件会话
        Session mailSession = Session.getInstance(props, authenticator);
        // 创建邮件消息
        MimeMessage message = new MimeMessage(mailSession);
        // 设置发件人
        InternetAddress form = new InternetAddress(
                props.getProperty("mail.user"));
        message.setFrom(form);
        // 设置收件人的邮箱
        InternetAddress to = new InternetAddress("[email protected]");
        message.setRecipient(RecipientType.TO, to);
        // 设置邮件标题
        message.setSubject("测试邮件");
        // 设置邮件的内容体
        message.setContent("这是一封测试邮件", "text/html;charset=UTF-8");
        // 最后当然就是发送邮件啦
        Transport.send(message);
        System.out.println("至此QQ邮件发送完毕!");
    }
}

后台运行截图:

前台就到邮箱中自己查看吧,就不看了吧。

关于邮箱端口的问题:

查看邮箱端口,首先要知道你的邮箱是哪个网站提供的,进入网站邮箱后,可以查看到,所开放的端口号。下面提供常用的邮箱客户端端口:

sina.com: 
POP3服务器地址:pop3.sina.com.cn(端口:110) 
 SMTP服务器地址:smtp.sina.com.cn(端口:25)   

sina.cn: 
POP3服务器地址:pop3.sina.com(端口:110) 
 SMTP服务器地址:smtp.sina.com(端口:25)   

sinaVIP: 
POP3服务器:pop3.vip.sina.com (端口:110)
  SMTP服务器:smtp.vip.sina.com (端口:25)
 sohu.com: 
POP3服务器地址:pop3.sohu.com(端口:110) 
 SMTP服务器地址:smtp.sohu.com(端口:25)  
126邮箱: 
POP3服务器 地址:pop.126.com(端口:110) 
 SMTP服务器 地址:smtp.126.com(端口:25) 
 139邮箱: 
POP3服务器地址:POP.139.com(端口:110)
 SMTP服务器地址:SMTP.139.com(端口:25)  
163.com: 
POP3服务器地址:pop.163.com(端口:110)  
SMTP服务器地址:smtp.163.com(端口:25) 
 QQ邮箱 
POP3服务器地址:pop.qq.com(端口:110)
 SMTP服务器地址:smtp.qq.com(端口:25) 
QQ企业邮箱 
POP3服务器地址:pop.exmail.qq.com (SSL启用 端口:995)
SMTP服务器地址:smtp.exmail.qq.com(SSL启用 端口:587/465) 
yahoo.com: 
POP3服务器地址:pop.mail.yahoo.com 
 SMTP服务器地址:smtp.mail.yahoo.com  
yahoo.com.cn: 
POP3服务器地址:pop.mail.yahoo.com.cn(端口:995)  
SMTP服务器地址:smtp.mail.yahoo.com.cn(端口:587  )
HotMail 
POP3服务器地址:pop3.live.com(端口:995) 
SMTP服务器地址:smtp.live.com(端口:587) 
gmail(google.com) 
POP3服务器地址:pop.gmail.com(SSL启用端口:995)
  SMTP服务器地址:smtp.gmail.com( SSL启用 端口:587) 
 263.net: 
POP3服务器地址:pop3.263.net(端口:110) 
 SMTP服务器地址:smtp.263.net(端口:25)  
263.net.cn: 
POP3服务器地址:pop.263.net.cn(端口:110) 
SMTP服务器地址:smtp.263.net.cn(端口:25) 
 x263.net: 
POP3服务器地址:pop.x263.net(端口:110)
 SMTP服务器地址:smtp.x263.net(端口:25) 
21cn.com: 
POP3服务器地址:pop.21cn.com(端口:110) 
 SMTP服务器地址:smtp.21cn.com(端口:25) 
 Foxmail: 
POP3服务器地址:POP.foxmail.com(端口:110) 
SMTP服务器地址:SMTP.foxmail.com(端口:25) 
china.com: 
POP3服务器地址:pop.china.com(端口:110) 
SMTP服务器地址:smtp.china.com(端口:25) 
tom.com: 
POP3服务器地址:pop.tom.com(端口:110) 
 SMTP服务器地址:smtp.tom.com(端口:25) 

 

 

你可能感兴趣的:(Java学习)