JavaMail实现发送邮件
- 是java提供的一组API,用来发送和接受邮件
- jar包:mail.jar和actvition.jar
邮件协议概述:
- SMTP:发送邮件协议(主要使用它)
- POP3:接受邮件的协议
IMAP:即可发送邮件又能接受协议。
SMTP的端口号:25 , POP3的端口号:110
核心类:
Session
如果你得到他,表示已经与服务器连接上了,与Connection作用相似!
需要使用Session.getInstance(Properties, Authericator);MimeMessage
他表示一个邮件对象,你可以调用他的setForm(),设置发件人、设置收件人、设置主题、设置正文TransPort
它只要一个功能,发邮件
具体步骤:
第一步;获得Session
Session session=Session.getInstance(Properties prop, Authericator auth);
其中prop需要指定两个键值,一个是指定服务器主机名,另一个是指定是否需要认证!我们当然需要认证!Properties prop=new Properties(); //设置两个属性 prop.setProperty("mail.host","smtp.163.com");//设置服务器主机名 prop.setProperty("mail.smpt.auth","true"); //设置需要认证 其中Authenticator是一个接口表示认证器,即校验客户端的身份。我们需要自己来实现这个接口,实现这个接口需要使用账户和密码 Authenticator auth=new Authenticator(){ //定义抽象的认证类 public PasswordAuthentication getPasswordAuthentication(){ //获取密码认证 new PasswordAuthentication("itcast_cxf","itcast"); //设置用户名和密码 } } 通过上面的准备,现在可以获取的Session对象了 Session session =Session.getInstance(prop,auth);- 第二步:创建MimeMessage对象
创建MimeMessage需要使用Session对象来创建
MimeMessage msg=new MimeMessage(session);
然后需要设置发信人地址、收信人地址、主体、以及邮件正文
msg.setFrom(new InternetAddress(2454357215@qq.com)); //设置发信人
msg.setRecipients(RecipientType.To,”itcast@qq.com,itcast@sina.com”) //设置多个收信人
msg.addRecipients(RecipientType.CC,”itcast@qq.com,itcast@sina.com”) //设置多个抄送
msg.addRecipients(RecipientType.BCC,”itcast@qq.com,itcast@sina.com”) //设置多个暗送
msg.setSubject(“这是一封测试邮件”); //设置主题(标题)
msg.setContent(“hello word!”,”text/html;charset=utf-8”); //设置正文
Tansport.send(msg); //发送邮件
案例1:发送普通邮件
public void fun() throws AddressException, MessagingException{
//1、得到session
Properties props = new Properties();
props.setProperty("mail.host","smtp.163.com");//设置服务器主机(smtp.xxx.com)
props.setProperty("mail.smtp.auth","true");//设置是否需要认证
Authenticator auth=new Authenticator(){//设置用户和密码
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("enjoy_life_mc","machen960702");
};
};
Session session=Session.getInstance(props, auth); //与服务器连接上
//创建MimeMessage
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("enjoy_life_mc@163.com")); //设置发件人
message.setRecipients(RecipientType.TO, "2454357215@qq.com"); //设置收件人
message.setRecipients(RecipientType.CC, "enjoy_life_mc@162.com"); //设置抄送
message.setRecipients(RecipientType.BCC, "enjoy_life_mc@sina.com");//设置暗送
message.setSubject("你好");//邮件标题
message.setContent("这就是一封垃圾邮件","text/html;charset=utf-8");//邮件内容
//3、发送
Transport.send(message);
}
案例2:发送带有附件的邮件
当发送包含附件的邮件时,邮件体就是多部件形式!
1、创建一个多部件的部件内容!MimeMultipart
MimeMultipart就是一个集合,用来装填多个主体部件
2、我们需要两个主体部件,一个是文本内容,另一个是附件
主体部件叫MimeBodyPart
3、给MimeMultipart设置给MimeMessage的内容!
public void fun3() throws AddressException, MessagingException, IOException{
//1、得到session
Properties props = new Properties();
props.setProperty("mail.host","smtp.163.com");//设置服务器主机(smtp.xxx.com)
props.setProperty("mail.smtp.auth","true");//设置是否需要认证
Authenticator auth=new Authenticator(){
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("enjoy_life_mc","machen960702");
};
};
Session session=Session.getInstance(props, auth); //与服务器连接上
//创建MimeMessage
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("enjoy_life_mc@163.com")); //设置发件人
message.setRecipients(RecipientType.CC, "enjoy_life_mc@162.com"); //设置收件人
message.setSubject("这是一封带有附加的邮件");
message.setContent("这就是一封垃圾邮件","text/html;charset=utf-8");
MimeMultipart list=new MimeMultipart(); //创建一个多部件
//创建一个MimeBodyPart
MimeBodyPart part1=new MimeBodyPart();
part1.setContent("最近好吗?", "text/html;charset=utf-8"); //设置主体内容
list.addBodyPart(part1); //把主体部件添加到集合中
//创建一个MimeBodyPart
MimeBodyPart part2=new MimeBodyPart();
part2.attachFile(new File("f:/白冰。jpg")); //设置附件的内容
part2.setFileName(MimeUtility.encodeText("大美女.jpg")); //设置显示的文件名称,其中encodeText用来处理中文乱码问题
list.addBodyPart(part2);
//3、发送
Transport.send(message);
}
MailUtils小工具的使用
- 需要的jar包:mail.jar和activation.jar和itcast-tool.jar
- 作用:能更加便捷的发送普通邮件和待附件的邮件
案例(发送普通邮件):
public void fun2() throws MessagingException, IOException{
//1、得到session
Session session = MailUtils.createSession("smpt.163.com", "enjoy_life_mc@163.com","machen960702");
//2、创建邮件对象
Mail mail = new Mail("enjoy_life_mc@163.com","enjoy_life_mc@162.com","标题:问候","正文:你好吗?");
//3、发送邮件
MailUtils.send(session, mail);
}
案例(发送带有附件的邮件):
public void fun2() throws MessagingException, IOException{
//1、得到session
Session session = MailUtils.createSession("smpt.163.com", "enjoy_life_mc@163.com","machen960702");
//2、创建邮件对象
Mail mail = new Mail("enjoy_life_mc@163.com","enjoy_life_mc@162.com","标题:问候","正文:你好吗?");
//创建附件对象
AttachBean attach = new AttachBean(new File("f:/白冰.jpg"),"小美女.jpg");
//添加附件到mail中
mail.addAttach(attach);
//3、发送邮件
MailUtils.send(session, mail);
}
4万+

被折叠的 条评论
为什么被折叠?



