Java实现发送邮件
注:1.要先保证发送方邮箱开启了IMAP/SMTP/POP3服务记录授权码(需要用到);以网易邮箱为例:设置—>POP3/SMTP/IMAP—>勾上“POP3/SMTP服务”与“IMAP/SMTP服务”—>设置授权码
2.需要的jar包:mailapi.jar、pop3.jar、smtp.jar下载地址
代码:
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class test {
/**
* @param args
* @throws MessagingException
* @throws UnsupportedEncodingException
* @param my.user 发送方的邮箱
* @param my.pw 发送邮箱的授权码
* @param my.title 发送方的昵称
* @param to 接收方邮箱
*/
public static void main(String[] args) throws MessagingException, UnsupportedEncodingException {
MyEmail my=new MyEmail();
String to="2811259714@qq.com";
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(props);
session.setDebug(true);
Message msg = new MimeMessage(session);
msg.setText("这是内容");
try {
msg.setFrom(new InternetAddress("antsitya@163.com",javax.mail.internet.MimeUtility.encodeText(my.title)));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
msg.setSubject("这是标题");
Transport transport = session.getTransport();
transport.connect("smtp.163.com",25,my.user,my.pw);
transport.sendMessage(msg,
new Address[]{new InternetAddress(to)});
transport.close();
}
}
以网易邮箱为例,
my对象中存储了发送邮箱(my.user)、授权码(my.pw)与发送方昵称(my.nick)信息,to为接收方的邮箱;
MimeMessage类表示整封邮件;
Properties表示一个持久的属性集,用来存储配置邮件服务器的参数;
msg.setText设置邮件对象的邮件内容;
msg.setFrom设置发送方(邮箱与昵称,昵称编码要改编为encode);
msg.setSubject设置邮件标题;
transport.connect("smtp.163.com",25,my.user,my.pw)连接网易邮箱服务器;
transport.sendMessage(msg, new Address[]{new InternetAddress(to)})发送邮件msg给邮箱to;