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);
}
}