邮件传输的原理分析
做一个东西一定要分析原理,建立架构,再编写代码 在网络上实现邮件传输需要邮件服务器
假设有两个人,张三李四,他们有两台不一样的电脑,张三想给李四发一封邮件
中间有一个基站来帮助他们通信,通过网络传输
他们有两个真实的邮箱,不同的邮箱有自己的服务器
基站先把张三发出的邮件存到网易服务器里,服务器通过基站找到qq的服务器,放入
李四通过电脑访问qq服务器,从中取出信件
发送邮件:SMTP协议
接收邮件:POP3协议
服务器内部有一个POP3接收,还有一个SMTP发送,下面还有一个文件系统FileSystem,每个账户有一定的空间
注册一个账号相当于在文件系统中申请一个地址
JAVA实现过程
使用Java发送E-mail十分简单,但是首先你应该准备JavaMail API和Java Activation Framework
得到两个jar包
- mail.jar
- activation.jar
MainlDemo01
package com.lding;
import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.security.GeneralSecurityException;
import java.util.Properties;
public class MailDemo01 {
public static void main(String[] args) throws GeneralSecurityException, MessagingException {
Properties prop=new Properties();
prop.setProperty("mail.host","smtp.qq.com");
prop.setProperty("mail.transport.protocol","smtp");
prop.setProperty("mail.smtp.auth","true");
MailSSLSocketFactory sf=new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
Session session= Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("邮箱","验证码");
}
});
session.setDebug(true);
Transport ts=session.getTransport();
ts.connect("smtp.qq.com","邮箱","验证码");
MimeMessage message=new MimeMessage(session);
message.setFrom(new InternetAddress("邮箱"));
message.setRecipient(Message.RecipientType.TO,new InternetAddress("邮箱"));
message.setSubject("你好世界!");
message.setContent("<h1 style='color:red'>你好啊!</h1>","text/html;charset=UTF-8");
ts.sendMessage(message,message.getAllRecipients());
ts.close();
}
}
运行结果 实现之前我们还需要开启qq邮箱的POP3/SMTP服务才可以实现
如果对您有帮助,免费的赞点一个 感谢🙏~~~
|