POP3
pop3即邮局协议的第三个版本,它规定怎样将个人计算机连接到lnternet的邮件服务器和下载电子邮件的电子协议,它是因特网电子邮件的第一个离线协议标准,pop3允许用户从服务器上把邮件存储到本地主机上,同时删除保存邮件服务器上的邮件,pop3服务器遵循pop3协议的接收邮件服务器,用来接收电子邮件
SMTP
smtp即简单邮件传输协议,它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式,smtp协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地,smtp服务器就是遵循SMTP协议的发送邮件服务器,smtp认证必须提供账户名和密码,这样是为了避免用户收到垃圾邮件的侵扰
IMAP
imap是交互式邮件存取协议,它跟pop3类似邮件访问标准协议之一,不一样的是,imap开启后在邮件客户端收取到的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上。
126邮件服务器
011
常用邮件服务商的SMTP信息
准备好smtp登录信息后,我们还需要把javamail相关的依赖jar包添加到当前项目
发送端
public class Morningonesix {
public static void main(String[] args) {
//SMTP服务器地址
String smtp = "smtp.126.com";
//邮箱账号和密码
String userName = "自己发端的账号";
String passWord = "自己的密码";
//SMTP服务器的连接信息
Properties props= new Properties();
props.put("mail.smtp.host", smtp);//SMTP主机名
props.put("mail.smtp.port", "25");//主机端口号
props.put("mail.smtp.auth", "true");//是否需要用户认证
props.put("mail.smtp.starttls.enable", "true");//启用TLS加密
//创建Session
//参数1:SMTP服务器的连接信息
//参数2:用户认证对象(Authenticator接口的匿名实现类)
Session session = Session.getInstance(props,new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, passWord);
}
});
//开启调试模式
session.setDebug(true);
System.out.println(session);
}
}
添加附件
public class Morningonesix2 {
public static void main(String[] args) throws IOException {
try {
//1创建session会话
Session session = Morningonesix1.creatsession();
//2创建邮件对象(Message抽象类的子类对象)
MimeMessage msg = new MimeMessage(session);//传入session
msg.setFrom(new InternetAddress("发件人的账号"));//发件人
msg.setRecipient(RecipientType.TO,new InternetAddress("收件人的账号"));//收件人
msg.setSubject("这是一份测试邮件","utf-8");//标题
//msg.setText("爱你独身走<b>暗巷</b>","text/html;charset=utf-8");//正文
//邮件内容“复合对象”
Multipart multipart = new MimeMultipart();
//正文
BodyPart textPart = new MimeBodyPart();
//参数一 : 正文内容
//参数二:内容类型,字符编码集
textPart.setContent("爱你独身走<b>暗巷</b>","text/html;charset=utf-8");
//附件
BodyPart imagePart = new MimeBodyPart();
imagePart.setFileName("jok.jpg");//设置附加文件的显示名称
//数据处理对象(读取附件文件从本地磁盘进行更改)
imagePart.setDataHandler(
new DataHandler(
new ByteArrayDataSource(
Files.readAllBytes(Paths.get("F:\\phone\\192-168-254-161.jpg")),
"application/octet-stream"
)));
//添加至邮件内容
multipart.addBodyPart(textPart);//添加正文
multipart.addBodyPart(imagePart);//添加附件
//设置附件内容
msg.setContent(multipart);
//3发送邮件
Transport.send(msg);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}