一、开通QQ邮箱服务

因为这里只是使用了邮箱的发邮件功能,所以我只要开通他的smtp功能就可以了

开启流程如下:

(1)进入到QQ邮箱页面,并登录进去

java 发送windows消息 java实现发送qq消息_jar包


(2)点击左上角的“设置”,将会出现如下页面


java 发送windows消息 java实现发送qq消息_jar_02




(3)选择“账户”,并滚动到以下页面所显示的页面。

java 发送windows消息 java实现发送qq消息_java 发送windows消息_03


(4)这里我们选择开启smtp服务,也就是只开通发邮件服务


java 发送windows消息 java实现发送qq消息_jar包_04





(5)点击之后将会弹出一个页面,提示需要发送短信信息生成授权码


java 发送windows消息 java实现发送qq消息_jar包_05




(6)按照要求发送短信之后,点击弹框中的“我已发送”,服务器将会生成一个授权码,我们要发邮件的时候,将会使用到该授权码。最后记得保存该设置,否则不生效。



java 发送windows消息 java实现发送qq消息_jar_06


二、用java编写发邮件程序

(1)编写该程序需要用到的jar包

javax.mail-1.5.5.jar
     spring-beans-4.0.7.RELEASE.jar
     spring-context-support-4.0.7.RELEASE.jar
     spring-core-4.0.7.RELEASE.jar

(2)编写程序,示例代码如下所示:

package mail;
 
import java.io.BufferedReader;
import java.io.FileReader;
 
import java.util.Properties;
 
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
 
/**
 * 使用QQ发送邮件工具类
 * @author canye
 * 2016年8月25日星期四
 */
 
public class SendEmailUtil {
private final static  String SERVICE_HOST = "smtp.qq.com";//QQ服务器
private final static  int    PORT = 465; //smtp的端口号
private final static  String PROTOCOL = "smtp"; //协议名称。smtp表示简单邮件传输协议
private final static  String ACCOUNT = "2421137562@qq.com"; //发送邮件的QQ账号
private final static  String AUTH_CODE = "hvuwbnvicjvgdjbc"; //QQ授权码(需要到https://mail.qq.com/申请)
 
private static final JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
/*
 *发送QQ邮件的初始化配置
 */
static{
senderImpl.setHost(SERVICE_HOST); //设置 使用QQ邮箱发送邮件的主机名
senderImpl.setPort(PORT); //设置端口号
senderImpl.setProtocol(PROTOCOL); //协议名称
senderImpl.setUsername(ACCOUNT); // 设置自己的邮箱帐号名称
senderImpl.setPassword(AUTH_CODE); // 设置对应账号申请到的授权码
Properties prop = new Properties();  
prop.put(" mail.smtp.auth ", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确  
prop.put("mail.smtp.starttls.enable", "true");
prop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); //使用ssl协议来保证连接安全
prop.put(" mail.smtp.timeout ", "25000"); //传输超时时间
senderImpl.setJavaMailProperties(prop);
}
/**
 * 发送简单邮件
 * @param accounts  被发邮件的用户数组
 * @param info      邮件信息
 * @param title     邮件主题
 */
public static void sendSimpleMail(String[] accounts,String info,String title){
//创建简单邮件对象
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setTo(accounts);  //设置邮件接收者账号数组
mailMessage.setFrom(ACCOUNT); //设置邮件的发送者
mailMessage.setSubject(title);//设置邮件的主题
mailMessage.setText(info);    //设置邮件的内容
//发送邮件
senderImpl.send(mailMessage);
}
/**
 * 函数入口(主要用于shell调用)
 * @param args  有三个参数,分别是文件名(主要是邮箱账户),邮件主题  和邮件内容
 */
public static void main(String args[])  
{  
if(args.length != 3){//判断输入参数是否正确
System.out.println("请输入正确的参数,分别是文件名、邮件主题和邮件内容");
return;
}
try {
//建立输入缓冲流,读取邮箱账号文件信息
BufferedReader reader = new BufferedReader(new FileReader(args[0]));
//创建一个存储账号信息
StringBuilder builder = new StringBuilder();
//遍历账号信息
String line = ""
int index = 0 ;//索引
while ((line = reader.readLine()) != null) {
//取出两边空格
 line = line.trim();
//判断改行是否为空
 if(line.equals(""))
 continue;
//把读取到的邮箱帐号添加到builder中,多个值用逗号分隔
if(index == 0 ){
builder.append(line);
}else {
builder.append(","+line);
}
index ++;
}
//把字符串切割成数组array
String[] accounts = builder.toString().split(",");
//发送邮件,args[1] 邮件主题,args[2] 邮件内容
sendSimpleMail(accounts, args[1], args[2]);
} catch (Exception e) {
e.printStackTrace();
}
       System.out.println(" 邮件发送成功.. ");  
}  
}

 

注意:如上所示,主函数需要三个参数,第一个是存储接收邮件的账号文件,第二个是邮件的主题,第三个是邮件的内容

三、把项目打包成jar包,以便shell脚本调用

(1)选中项目,点击右键>>>Export



java 发送windows消息 java实现发送qq消息_java 发送windows消息_07


(2)选择Runable JAR file然后点击next ,这是因为这个项目依赖了第三方的包,如果没有第三方依赖包的话,可以选择JAR file

java 发送windows消息 java实现发送qq消息_jar包_08





(3)从launch configuration中选择打包的jar中的主类,即main函数所在的类,不过这里要注意,如果这个类没有运行过的话,在下拉列表中将不会存在,所以在打包之前,要先运行这个类。第二个圈起来的是打包的jar包的输出路径;接下来是选择其他引用类的打包方式,默认选择是第二个,意思是把项目中用到的jar包也打包到即将成的jar中。



java 发送windows消息 java实现发送qq消息_jar包_09


四、测试QQ邮件是否可用(必须有java环境)

(1)把生成的jar包拷贝到linux系统的~/jar/目录下


java 发送windows消息 java实现发送qq消息_java_10

(2)编写一个存储接收邮件的qq邮箱账号文件~/jar/qq_account.txt,测试内容如下

251341332@qq.com
408337319@qq.com

(3)执行以下命令来测试邮件是否可以成功发送,该命令带三个输入参数,第一个是账号文件名,第二个是邮件主题,第三个是邮件内容

  

今天没有作业"  "居然没有作业""