- 收发邮件
- 发邮件,从客户端把邮件发送到服务器
- 收邮件,把邮件从服务器下载到客户端
- 我们注册额邮件账户,就是在邮件服务器中注册的
- 流程:
- 邮件协议
- 与HTTP协议相同,收发邮件也需要有传输的协议
- ==SMTP:(simple mail transfer protocol 简单邮件传输协议)发邮件协议==
- ==POP3:(post office protocol version 3 , 邮局协议第三版)收邮件协议==
- IMAP:(internet message access protocol ,因特网消息访问协议)收发邮件协议
- 邮件收发过程
- 每个邮件服务器都由于smtp服务器和pop3服务器构成,其中SMTP服务器用来负责发邮件,pop3服务器用来接受邮件
- 比如:通过163邮件发送到126,163服务器 是不会存储这封邮件的
- 邮件服务器名称
- smtp服务器的端口号是==25==,服务器名称为smtp.xxx.xxx
- pop3服务器的端口号是==110==,服务器的名称是pop3.xxx.xxx
- 例如:163:smtp.163.com和pop3.163.com
import org.junit.Test;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.IOException;
import java.util.Properties;
public class JavaMaile {
@Test
public void test1() throws MessagingException, IOException {
Properties properties = new Properties();
properties.setProperty("mail.host","smtp.163.com");
properties.setProperty("mail.smtp.auth" , "true");
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("lien_wangyi@163.com", "lien19941225521");
}
});
MimeMessage message = new MimeMessage(session);
message.setSubject("这是我今天的测试邮件使用的是JavaMile工具");
message.setFrom(new InternetAddress("lien_wangyi@163.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("274741937@qq.com"));
message.setContent("着是我用来测试的邮件还希望不要拦截,不然会很伤心" , "text/html;charset=utf-8" );
MimeMultipart mimeMultipart = new MimeMultipart();
MimeBodyPart part1 = new MimeBodyPart();
part1.setContent("这次我发送的是带有附件的邮件,请注意查收" ,"text/html;charset=utf-8");
mimeMultipart.addBodyPart(part1);
MimeBodyPart part2 = new MimeBodyPart();
part2.attachFile("D:/fileUpload/成功.jpg");
part2.setFileName(MimeUtility.encodeText("成功.jpg"));
mimeMultipart.addBodyPart(part2);
message.setContent(mimeMultipart);
Transport.send(message);
}
@Test
public void Test2() throws MessagingException {
Properties properties = new Properties();
properties.setProperty("mail.smtp.auth" , "true");
Session session = Session.getInstance(properties);
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setFrom(new InternetAddress("lien_wangyi@163.com"));
mimeMessage.setSubject("我又来测试");
mimeMessage.setContent("连接不上是什么原因" ,"text/html;charset=utf-8");
Transport transport = session.getTransport();
transport.connect("smtp.163.com",25, "lien_wangyi@163.com", "lien19941225521");
transport.sendMessage(mimeMessage , InternetAddress.parse("274741937@qq.com"));
transport.close();
}
}