欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

电子邮箱

程序员文章站 2022-03-18 09:35:55
...

电子邮箱的概念

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

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

邮件协议

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

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

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

发送邮件的流程

电子邮箱

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

邮箱服务器

电子邮箱
使用EyouMailServer 邮箱服务器

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

  2. 进入页面,点击工具—》服务器设置
    电子邮箱

  3. 设置新账号
    电子邮箱

  4. 完成啦

     在邮箱服务器中设置邮箱账号,服务器给该账号分配空间存储和发送邮件,
     在客户端直接登录该账号的名字就可以了,但是格式必须是 账号名@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("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");
		
	}
}