您的位置:首页 > 编程语言 > Java开发

4000 J2EE初级学习之寒假进阶——JavaMail邮件

2018-03-04 14:01 453 查看

JavaMail

是Java提供的一组API,用来发送和接收邮件!

邮件相关的协议:

SMTP 25 ——> 简单的邮件传输协议

POP3 110 ——> 邮局协议第三版

JavaMail

1.导包!

mail.jar

activition.jar

核心类:

1.Session

如果你得到了它,表示已经和服务器连接上了,与Connection的作用象相似!

得到Session,需要使用Session.getInstance(Properties,Authenticator);

Properties props = new Properties();

props.setProperty(“mail.host”,”smtp.163.com”);

props.setProperty(“mail.smtp.auth”,”true”);

Authenticator auth = new Authenticator() {

protected PasswordAuthentication getPasswordAuthentication(){

return new PasswordAuthentication(“TiHom_YZH”,”TiHom”);

}

};

Session session = Session.getInstance(props,auth);

2.MIMEMessage

它表示一个邮件对象,你可以调用它的setForm(),设置发件人、设置收件人、设置主题、设置正文!

3.TransPort

它只有一个功能,发邮件!

JavaMail代码:

package com.TiHom.javamail;

import org.junit.jupiter.api.Test;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;

import java.util.Properties;

/**
* @author TiHom
*/
public class JavaMail1 {
@Test
public void fun1() throws MessagingException {
//得到Session
Properties props = new Properties();
props.setProperty("mail.host","smtp.163.com");
props.setProperty("mail.smtp.auth","true");

//注意导包别导错,应该是javax.mail下的包
Authenticator auth = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("TiHom_YZH","TiHom");
}
};

Session session = Session.getInstance(props,auth);
//创建MIMEMessage
MimeMessage msg = new MimeMessage(session);
//设置发件人
msg.setFrom(new InternetAddress("13652493839@163.com"));
//设置收件人
msg.setRecipients(MimeMessage.RecipientType.TO,"980406086@qq.com");
//设置抄送
msg.setRecipients(Message.RecipientType.CC,"");
//设置暗送
msg.setRecipients(Message.RecipientType.BCC,"");

msg.setSubject("这是来着我自己的邮件");
msg.setContent("这就是一封垃圾邮件!","text/html;charset=utf-8");

//发
Transport.send(msg);
}

/**
* 带有附件的邮件
*/
public void fun2() throws Exception{
//得到Session
Properties props = new Properties();
props.setProperty("mail.host","smtp.163.com");
props.setProperty("mail.smtp.auth","true");

//注意导包别导错,应该是javax.mail下的包
Authenticator auth = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("TiHom_YZH","TiHom");
}
};

Session session = Session.getInstance(props,auth);
//创建MIMEMessage
MimeMessage msg = new MimeMessage(session);
//设置发件人
msg.setFrom(new InternetAddress("13652493839@163.com"));
//设置收件人
msg.setRecipients(MimeMessage.RecipientType.TO,"980406086@qq.com");

msg.setSubject("这是来着我自己的邮件有附件");
/*
* 当发送包含附件的邮件时,邮件体就为多部件形式!
* 1.创建一个多部件的部件内容!MimeMultipart
*   MimeMultipart就是一个集合,用来装载多个主体部件!
* 2.我们需要创建2个主体部件,一个是文本内容的,一个是附件的
*   主体部件叫做MimeBodyPart
* 3.把MimeMultipart设置给MimeMessage的内容!
*/
//创建多部件内容
MimeMultipart list = new MimeMultipart();
//创建MimeBodyPart
MimeBodyPart part1 = new MimeBodyPart();
//这是主体部件的内容
part1.setContent("这是一封包含附件的垃圾邮件!","text/html;charset=utf-8");
//把主体部件添加到集合中
list.addBodyPart(part1);

//再创建MimeBodyPart
MimeBodyPart part2 = new MimeBodyPart();
//设置附件的内容
DataHandler dh = new DataHandler(new FileDataSource(""));
part2.setDataHandler(dh);
//设置显示的文件名称,其中encodeText用来处理中文乱码问题
part2.setFileName(MimeUtility.encodeText("大美女.jpg"));
list.addBodyPart(part2);

//把它设置给邮件做为邮件内容
msg.setContent(list);
//发
Transport.send(msg);

}
}


还有base64编码

package com.TiHom.javamail;

import org.junit.jupiter.api.Test;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.IOException;

/**
* @author TiHom
*/
public class Demo1 {
@Test
public void fun1() throws IOException {
//BASE64编码
String s = "username";
BASE64Encoder encoder = new BASE64Encoder();
s = encoder.encode(s.getBytes("UTF-8"));

//BASE64解码
BASE64Decoder decoder = new BASE64Decoder();
byte[] bytes = decoder.decodeBuffer("dX");
System.out.println(new String(bytes,"UTF-8"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: