zoukankan      html  css  js  c++  java
  • Java开发系列-电子邮箱

    概述

    电子邮箱就是在邮箱服务器上开启的一块空间。邮箱服务器就是一个安装在计算机的服务软件,提供有邮件服务。

    邮箱的发送流程

    现在tom要发送一份邮件给jerry,首先tom将邮件通过客户端连接自己设置发送邮件服务器,通过邮件发送服务器将邮件发给了jerry的发送邮件服务器中。
    jerry也是通过客户端连接自己的收件服务器,然后收件服务器从jerry的发件服务器中获取邮件。
    如果jerry要发送邮件给tom也是相同的流程。

    邮箱协议

    邮件的发送和接收都是需要协议的,分别是发送邮件协议、接收邮件的协议。
    发送邮件的协议:smtp
    接收邮件的协议:pop/pop3 或者 imap

    查看下126邮箱的发送和接收邮件协议服务器

    Java实现发送邮件

    主要涉及到三个核心类

    Properties 邮件服务器会话对象 Session
    Message 邮件内容
    Transport 邮件发送者

    邮件发送Utils

    MailUtils

    package com.coderhong.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.163.com");
    		props.setProperty("mail.smtp.auth", "true");// 指定验证为true
    
    		// 创建验证器
    		Authenticator auth = new Authenticator() {
    			public PasswordAuthentication getPasswordAuthentication() {
    				//设置发送人的帐号和密码
    				return new PasswordAuthentication("hongketao1616", "hkt762100.");
    			}
    		};
    
    		Session session = Session.getInstance(props, auth);
    
    		// 2.创建一个Message,它相当于是邮件内容
    		Message message = new MimeMessage(session);
    
    		//设置发送者
    		message.setFrom(new InternetAddress("hongketao1616@163.com"));
    
    		//设置发送方式与接收者
    		message.setRecipient(RecipientType.TO, new InternetAddress(email)); 
    
    		//设置邮件主题
    		message.setSubject("用户激活");
    		// message.setText("这是一封激活邮件,请<a href='#'>点击</a>");
    
    		//设置邮件内容
    		message.setContent(emailMsg, "text/html;charset=utf-8");
    
    		// 3.创建 Transport用于将邮件发送
    		Transport.send(message);
    	}
    }
    

    MailUtils说明

  • 相关阅读:
    fzu 2204 7 dp
    fzu Problem 2198 快来快来数一数 (快速幂+优化)
    Hdu 5464 Clarke and problem (dp)
    Hdu 5458 Stability (LCA + 并查集 + 树状数组 + 缩点)
    Codeforces Round #321 (Div. 2) A, B, C, D, E
    Hdu 5451 Best Solver (2015 ACM/ICPC Asia Regional Shenyang Online) 暴力找循环节 + 递推
    Hdu 5459 Jesus Is Here (2015 ACM/ICPC Asia Regional Shenyang Online) 递推
    Hdu 5452 Minimum Cut (2015 ACM/ICPC Asia Regional Shenyang Online) dfs + LCA
    Hdu 5442 Favorite Donut (2015 ACM/ICPC Asia Regional Changchun Online 最大最小表示法 + KMP)
    I Count Two Three---hdu5878(打表+二分)
  • 原文地址:https://www.cnblogs.com/CoderHong/p/9520793.html
Copyright © 2011-2022 走看看