电子邮箱
程序员文章站
2022-03-18 09:35:55
...
电子邮箱的概念
电子邮箱其实就是分为邮箱服务器和电子邮箱客户端
- 邮箱服务器:主要是用于接收并转发邮件,类似于邮局,把用户的邮件接收过来,然后转 发到邮件接收者的电子邮箱中。
- 邮箱客户端:就是每个账号在服务器中开辟的一小段空间。用户在服务器中申请一个账号,服务器就会为这个账号分配一小段空间,然后用户使用这个账号和空间,进行存储邮件和发送邮件。
邮件协议
- SMTP 发送邮件协议
端口号:22
定义了邮件在客户端软件和SMTP服务器,或者在SMTP服务器之间的传输格式和规范 - POP3/imap/POP 接收邮件协议
端口号:110
定义了邮件在POP3服务器和客户端软件之间的传输格式和规范
接收和发送邮件可以是两个服务器,也可以是一个服务器,大公司一般是分离的。
发送用的协议是SMTP
接收用的协议可能是POP3或者imap,或者两者混合用
作用:约束了邮件在网络传输的过程中的传输格式
发送邮件的流程
邮箱服务器的搭建和客户端软件的安装流程
邮箱服务器
使用EyouMailServer 邮箱服务器
-
双击eyoumailserversetup.exe 运行文件,直接下一步一路安装
-
进入页面,点击工具—》服务器设置
-
设置新账号
-
完成啦
在邮箱服务器中设置邮箱账号,服务器给该账号分配空间存储和发送邮件, 在客户端直接登录该账号的名字就可以了,但是格式必须是 账号名@store.com 注册账号在服务端注册,用foxmail客户端软件直接登录就可以了。
如果你想使用fixmail软件连接qq邮箱的话,首先是登录你自己的QQ邮箱账号和密码。连接的服务器也应该是QQ邮箱的服务器
客户端软件的安装
- 双击foxmail客户端—>安装—>
完成啦
使用JavaMail发送邮件
-
导入jar包
mail.jar 包,用来发送邮件
-
java代码实现,发送邮件的代码是固定不变的,用工具类封装下,以后直接拿来用就可以
package email;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class TestEmail {
public static void main(String[] args) throws Exception {
Properties props = new Properties();
//本地的不需要这两行代码,直接注释就可以
props.setProperty("mail.host", "smtp.qq.com");
props.setProperty("mail.smtp.auth", "true");
// 0.2 账号和密码
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 126账号和密码(模拟账号,需要自己注册,如果服务器没有注册账号,则会出异常)
// return new PasswordAuthentication("aaa", "123456");
return new PasswordAuthentication("aaa@qq.com", "授权码");
}
};
// 1 与126服务器建立连接:Session
Session session = Session.getDefaultInstance(props, authenticator);
// 2 编写邮件:Message
Message message = new MimeMessage(session);
// 2.1 发件人(模拟账号)
// message.setFrom(new InternetAddress("aaa@qq.com"));
message.setFrom(new InternetAddress("aaa@qq.com"));
// 2.2 收件人 , to:收件人 , cc :抄送,bcc:暗送(密送)。(模拟账号)
message.setRecipient(RecipientType.TO, new InternetAddress("aaa@qq.com"));
// 2.3 主题
message.setSubject("这是我们得第一份邮件");
// 2.4 内容
message.setContent("哈哈,您到我的商城注册了。", "text/html;charset=UTF-8");
// 3 将消息进行发送:Transport
Transport.send(message);
}
}
注意:授权码要去qq邮箱页面中账号中设置,然后获取授权码
注意:
只需要发件人邮箱(也就是自己设定的系统邮箱)开通POP3/SMTP协议,
收件人的邮箱是不需要开通POP3/SMTP协议的
邮件工具类MainUtils.java
package cn.store.utils;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class MailUtils {
public static void sendMail(String email, String emailMsg)
throws AddressException, MessagingException {
// 1.创建一个程序与邮件服务器会话对象 Session
Properties props = new Properties();
//设置发送的协议
//props.setProperty("mail.transport.protocol", "SMTP");
//设置发送邮件的服务器
//props.setProperty("mail.host", "smtp.126.com");
//props.setProperty("mail.smtp.auth", "true");// 指定验证为true
// 创建验证器
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//设置发送人的帐号和密码
return new PasswordAuthentication("aaa@qq.com", "admin");
}
};
Session session = Session.getInstance(props, auth);
// 2.创建一个Message,它相当于是邮件内容
Message message = new MimeMessage(session);
//设置发送者
message.setFrom(new InternetAddress("aaa@qq.com"));
//设置发送方式与接收者
message.setRecipient(RecipientType.TO, new InternetAddress(email));
//设置邮件主题
message.setSubject("用户**");
String url="http://localhost:8080/store_v4/UserServlet?method=active&code="+emailMsg;
String content="<h1>来自购物天堂的**邮件!**请点击以下链接!</h1><h3><a href='"+url+"'>"+url+"</a></h3>";
//设置邮件内容
message.setContent(content, "text/html;charset=utf-8");
// 3.创建 Transport用于将邮件发送
Transport.send(message);
}
public static void main(String[] args) throws AddressException, MessagingException {
MailUtils.sendMail("aaa@qq.com", "1234567890");
System.out.println("OK");
}
}