zoukankan      html  css  js  c++  java
  • JavaWeb基础—邮件发送

    一、JavaMail概述与入门

    JavaMail-java提供的一组API,用来收发邮件  中间有个邮件服务器:

      客户端发给邮件服务器,另外一收件客户端从邮件服务器下载(最稳的还是163,QQ有点不靠谱)

      SMTP协议 port 25
        SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。
        它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。
        SMTP 协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
        SMTP 服务器就是遵循SMTP协议的发送邮件服务器。SMTP认证,简单地说就是要求必须在提供了账户名
        和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。增加 SMTP 认证的
        目的是为了使用户避免受到垃圾邮件的侵扰。
        SMTP[2] 已是事实上的E-Mail传输的标准。

      POP协议 POP3邮局协议第三版 port 110
        POP邮局协议负责从邮件服务器中检索电子邮件。

      IMAP协议
        互联网信息访问协议(IMAP)是一种优于POP的新协议。

        (了解)teInet发邮件(BASE64 sun包下的,java javax的底层依赖,不建议使用,报warning)使用禁止的类略,百度。

      使用JavaMail发送:第一步为导包,需要两个包:mail.jar_activation.jar
      核心类
        Session :与Connection类似,但不同于web的HttpSession 步骤偏多
        MimeMessage :邮件对象
        TransPort :用来发邮件
        发带附件与不带附件(多部件主体)MimeMultiPart MimeBodyPart

       示例:

    package cn.itcaat.mail;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.Properties;
    
    import javax.mail.Authenticator;
    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;
    
    import org.junit.Test;
    
    /**
     * 测试无附件的发邮件的演示
     * @author jiangbei01
     *
     */
    public class Demo01 {
        @Test
        public void fun1() throws AddressException, MessagingException{
            /*
             * 1.得到session
             */
            Properties props = new Properties();
            //主机名
            props.setProperty("mail.host", "smtp.163.com");
            //是否需要认证
            props.setProperty("mail.smtp.auth", "true");
            Authenticator auth = new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    //返回值类型具有一般构造器
                    return new PasswordAuthentication("ttbeifen1", "tt2924");
                }
            };
            Session session = Session.getInstance(props, auth);
            //得到邮件对象
            MimeMessage msg = new MimeMessage(session);
            //抄送暗送此处略
            msg.setFrom(new InternetAddress("ttbeifen1@163.com"));//发件人
            msg.setRecipients(RecipientType.TO, "775992759@qq.com");//收件人
            msg.setSubject("这是来自DAY22的测试");
            msg.setContent("炸鸡和啤酒", "text/html;charset=utf-8");
            
            //发送
            Transport.send(msg);
            
        }
    }
    View Code

    二、邮件组件的运用

      apache-commons-email的使用请参考实用工具类随笔http://www.cnblogs.com/jiangbei/p/7659886.html

      jodd-mail由于未测试成功有待补充...

      hutool也发布新版本了,可以更加简单的发送邮件了。

  • 相关阅读:
    weui-switch开关控件,表单提交后如何取值
    [转]判断存储过程、触发器、视图是否存在并删除
    修改服务器的3389端口
    如何在react-native 中优雅的使用 redux
    react native js 与 native 的通信与交互方式
    对 JS virtual DOM 的一知半解
    Python的实例方法,类方法,静态方法之间的区别及调用关系
    redux 管理你的 react 应用
    react- native 入门
    git 指南
  • 原文地址:https://www.cnblogs.com/jiangbei/p/6705876.html
Copyright © 2011-2022 走看看