前提
1.要先保证发送方邮箱开启了IMAP/SMTP/POP3服务记录授权码(需要用到);
以网易邮箱为例:设置—>POP3/SMTP/IMAP—>勾上“POP3/SMTP服务”与“IMAP/SMTP服务”—>设置授权码
2.需要的jar包:mailapi.jar、pop3.jar、smtp.jar
Code
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(my.user,javax.mail.internet.MimeUtility.encodeText(my.nick)));
} catch (Exception e) {
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;
评论区