三个协议:
SMPT(simple email Tarnsfer protocol,简单邮件发送协议):发邮件协议
POP3(Post Office Protocol Version 3,邮局协议第三版):收邮件协议
IMPA(Internet Messege Access Protocol,因特网消息访问协议)收发邮件协议,暂时不涉及
过程:
发邮件:客户端通过SMPT协议将邮件上传到邮件服务器,邮件服务器将邮件保存到数据库。
收邮件:邮件服务器从数据库中获得邮件,客户端从邮件服务器中下载该邮件
Javamail:发送邮件
三个核心类:
Session:如果你得到了它,表示与服务器建立了连接。与Connection作用类似
MimeMessage:它表示一个邮件对象,用过它的setXXX()方法可以设置收件人,发件人,主题,主体等
TransferPort:只有一个功能:发邮件
1..导包:mail.jar activation.jar
2.得到Session(注意区分ServletSession)
3.创建MimeMessege msg
4.调用msg的相关方法设置:收件人,发件人,主题,主体等
5.发送:TransferPort.send(msg);
发普通邮件代码:
Properties prop=new Properties();
prop.setProperty("mail.host","smtp.126.com");//设置服务器主机地址
prop.setProperty("mail.smtp.auth","true");//
Authenticator auth=new Authenticator(){//它是一个抽象类,需要我们自己实现
@Override
protectedPasswordAuthentication getPasswordAuthentication() {
//TODO Auto-generated method stub
return newPasswordAuthentication("******@**", "**********");
}
};
Sessionsession=Session.getInstance(prop, auth);
MimeMessagemsg=new MimeMessage(session);//创建MimeMessage对象
msg.setFrom(newInternetAddress("***********@****"));//设置发件人
msg.setRecipients(RecipientType.TO,"**********");//设置收件人
//msg.setRecipients(RecipientType.CC,"*************");//设置抄送
//msg.setRecipients(RecipientType.BCC,"***********");//设置暗送
msg.setSubject("这是一封来自java的邮件");//
msg.setContent("这是一封测试邮件","text/html;charset=utf-8");
Transport.send(msg);
发带附件的邮件代码:
Properties prop=new Properties();
prop.setProperty("mail.host","smtp.126.com");//设置服务器主机地址
prop.setProperty("mail.smtp.auth","true");
Authenticator auth=new Authenticator(){//它是一个抽象类,需要我们自己实现
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// TODO Auto-generatedmethod stub
return newPasswordAuthentication("**********","**********");
}
};
Session session=Session.getInstance(prop, auth);
MimeMessage msg=new MimeMessage(session);//创建MimeMessage对象
msg.setFrom(new InternetAddress("**********"));//设置发件人
msg.setRecipients(RecipientType.TO,"**********");//设置收件人
//msg.setRecipients(RecipientType.CC,"**********");//设置抄送
//msg.setRecipients(RecipientType.BCC,"**********");//设置暗送
msg.setSubject("这是一封来自java的邮件");//
//创建多部分主体
MimeMultipart list=new MimeMultipart();//创建多部件主体
MimeBodyPart part1=new MimeBodyPart();//创建BodyPart
part1.setContent("这是一封测试邮件","text/html;charset=utf-8");
list.addBodyPart(part1);//将bodyPart添加到list中
MimeBodyPart part2=new MimeBodyPart();//再创建一个BodyPart
part2.attachFile(new File("e:/others/psb.jpg"));
part2.setFileName(MimeUtility.encodeText("帅哥.jpg"));//设置文件名称其中encodeText("帅哥.jpg")处理中文乱码问题
list.addBodyPart(part2);//将part2添加到list中
msg.setContent(list);//把list设置给msg
Transport.send(msg);
备注:首先在邮箱中设置支持SMPT发送邮件,注意自己的smtp密码,与邮箱密码区分,其次要注意Sessionsession=Sesssion.getInstance(prop,auth);(注意两个参数,少一个不报错,而且发送不成功)