电子邮箱

电子邮箱的概念

电子邮箱其实就是分为邮箱服务器和电子邮箱客户端

  1. 邮箱服务器:主要是用于接收并转发邮件,类似于邮局,把用户的邮件接收过来,然后转 发到邮件接收者的电子邮箱中。
  2. 邮箱客户端:就是每个账号在服务器中开辟的一小段空间。用户在服务器中申请一个账号,服务器就会为这个账号分配一小段空间,然后用户使用这个账号和空间,进行存储邮件和发送邮件。

邮件协议

  • SMTP 发送邮件协议
    端口号:22
    定义了邮件在客户端软件和SMTP服务器,或者在SMTP服务器之间的传输格式和规范
  • POP3/imap/POP 接收邮件协议
    端口号:110
    定义了邮件在POP3服务器和客户端软件之间的传输格式和规范

接收和发送邮件可以是两个服务器,也可以是一个服务器,大公司一般是分离的。
发送用的协议是SMTP
接收用的协议可能是POP3或者imap,或者两者混合用

作用:约束了邮件在网络传输的过程中的传输格式

发送邮件的流程

在这里插入图片描述

邮箱服务器的搭建和客户端软件的安装流程

邮箱服务器


使用EyouMailServer 邮箱服务器

  1. 双击eyoumailserversetup.exe 运行文件,直接下一步一路安装

  2. 进入页面,点击工具—》服务器设置
    在这里插入图片描述

  3. 设置新账号
    在这里插入图片描述

  4. 完成啦

    扫描二维码关注公众号,回复: 10413713 查看本文章
     在邮箱服务器中设置邮箱账号,服务器给该账号分配空间存储和发送邮件,
     在客户端直接登录该账号的名字就可以了,但是格式必须是 账号名@store.com
     注册账号在服务端注册,用foxmail客户端软件直接登录就可以了。
    

如果你想使用fixmail软件连接qq邮箱的话,首先是登录你自己的QQ邮箱账号和密码。连接的服务器也应该是QQ邮箱的服务器

客户端软件的安装

  1. 双击foxmail客户端—>安装—>
    在这里插入图片描述
    在这里插入图片描述
    完成啦

使用JavaMail发送邮件

  1. 导入jar包

     mail.jar  包,用来发送邮件
    
  2. 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("[email protected]", "授权码");
            }
        };

        // 1 与126服务器建立连接:Session
        Session session = Session.getDefaultInstance(props, authenticator);

        // 2 编写邮件:Message
        Message message = new MimeMessage(session);
        // 2.1 发件人(模拟账号)
//        message.setFrom(new InternetAddress("[email protected]"));
        message.setFrom(new InternetAddress("[email protected]"));
        // 2.2 收件人 , to:收件人 , cc :抄送,bcc:暗送(密送)。(模拟账号)
        message.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"));
        // 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("[email protected]", "admin");
			}
		};

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

		// 2.创建一个Message,它相当于是邮件内容
		Message message = new MimeMessage(session);

		//设置发送者
		message.setFrom(new InternetAddress("[email protected]"));

		//设置发送方式与接收者
		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("[email protected]", "1234567890");
		System.out.println("OK");
		
	}
}

发布了60 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44142032/article/details/89319167