java基于javamail的验证码邮件发送

java基于javamail的邮件发送

一:环境准备

1:jaavmail的jar包 下载地址https://github.com/javaee/javamail/releases 如果无法连接上github可以在这里下载

2:163服务器的开启并得到授权码

打开网易邮箱点击如图所示的设置

点击POP3/SMTP/IMAP

开启邮件发送服务

在邮件中心点击左侧的客户端授权密码

获得客户端授权密码(点击开启会给你一个授权码,记住一会有用)

到这里为止,环境和工具包都弄好了,接下来就是开发了。

二:开发邮件发送

1:在eclipse(这里选择的IDE是eclipse,其他的也可以)里面建一个java项目

2:将javamail这个jar包导进去(这里直接把jar包放到src下,然后右键--》build path--》add to build path就可以了)如果是maven工程的话就把下面这段代码加到你的pom文件皆可以了

 <dependency>
     <groupId>com.sun.mail</groupId>
     <artifactId>javax.mail</artifactId>
     <version>1.6.0</version>
 </dependency>

3:接下来就是代码的编写了(发邮件,首先你肯定要创建一封邮件)在src下建一个EMcreate的类(将下面的xxxx改成相应的邮箱和文字)

package com;

import java.util.Date;
import java.util.Properties;

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

public class EMcreate {
	
	//account是发件人的邮箱
	//password就是刚才你得到的那个授权码
	//code是你要发送的验证码
	public static MimeMessage createEmail(final String account,final String password,final String code) throws Exception {
		Properties config = new Properties();
		Session session = Session.getInstance(config,new Authenticator() {
			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(account, password);
			}
		});
		//1 创建邮件发送对象
		MimeMessage m = new MimeMessage(session);
		//2 设置发件人xxxxx是邮件说明
		Address from = new InternetAddress(account,"xxxxxxx","utf-8");
		m.setFrom(from);
		//3 设置收件人xxxx是收件人的地址
		m.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"));
		//4 设置抄送人
		//todo
		//5 设置密送人
		//todo
		//6 设置主题
		m.setSubject("code", "utf-8");
		//7 设置正文
		m.setContent("your Authentication code is"+code, "text/plain;charset=utf-8");
		//8 设置邮件发送时间
		m.setSentDate(new Date());
		//9 确认操作
		m.saveChanges();
		return m;
	}

}

4:再写一个生成验证码的java类(这里是生成六位验证码)

package com;

public class Code {
	
	public static void getCode() {
		String str = "";
		for (int i = 0; i < 6; i++) {
			str += (int)Math.floor(Math.random()*10);
		}
		System.out.println(str);
	}

}

5:接下来就是最后一步发邮件了

package com;

import java.util.Properties;

import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;

public class EMsend {
	
	public static void main(String[] args) throws Exception {
		String account = "你的163邮箱";
		String password = "你刚刚获得的授权码";
		MimeMessage m = EMcreate.createEmail(account, password, Code.getCode());
		Session session = m.getSession();
		session.setDebug(true);
		Properties config = session.getProperties();
		config.put("mail.transport.protocol", "smtp");
		config.put("mail.smtp.host", "smtp.163.com");
		//config.put("mail.smtp.port", "25");
		config.put("mail.smtp.auth", "true");
		//config.put("mail.smtp.ssl.enable", "false");
		Transport.send(m);
	}

}

6:运行上面这个程序,我的邮箱就接收到这封邮件了

7:看一下console的debug信息,也是成功发送的(这里特别注意,你的邮件内容最好是全英文或者繁体字,否则163可能认为你是一封垃圾邮件,然后会出现一个554的错误)

8:这个源码可以去这里下载

猜你喜欢

转载自blog.csdn.net/qq_35156733/article/details/78430022
今日推荐