精华内容
下载资源
问答
  • 邮件发送

    2020-07-25 18:08:37
    我们通常把处理用户smtp请求(邮件发送请求服务器称之为SMTP服务器(邮件发送服务器)。 SMTP服务器地址:一般是smtp.xxx.com,比如163邮箱是smtp.163.com 2.2、POP3协议 接收邮件: 我们通常把处理永辉pop3请求...

    邮件发送原理及实现

    1、原理图

    在这里插入图片描述

    2、传输协议

    2.1、SMTP协议

    发送邮件:

    我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

    SMTP服务器地址:一般是smtp.xxx.com,比如163邮箱是smtp.163.com

    2.2、POP3协议

    接收邮件:

    我们通常把处理永辉pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)

    2.3、传输原理图
    在这里插入图片描述

    3、发送邮件

    3.1、简单邮件

    在这里插入图片描述

    1.下载mail-1.4.7.jar和activation-1.1.1.jar

    2.代码实现

    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.security.GeneralSecurityException;
    import java.util.Properties;
    
    /**
     * @author 许浩
     * @date 2020/7/23 - 21:19
     */
    public class MailDemo01 {
        public static void main(String[] args) throws Exception {
    
            Properties prop=new Properties();
            prop.setProperty("mail.host","smtp.qq.com");//设置QQ邮件服务器
            prop.setProperty("mail.transport.protocol","smtp");//邮件发送协议
            prop.setProperty("mail.smtp.auth","true");//需要验证用户名和密码
    
            //关于QQ邮箱,还要设置SSL加密
            MailSSLSocketFactory sf=new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable","true");
            prop.put("mail.smtp.ssl.socketFactory",sf);
    
            //使用JavaMail发送邮件的5个步骤
    
            //1、创建定义整个应用程序所需的环境信息的Session对象
            //QQ才有,其他不用
            Session session= Session.getDefaultInstance(prop, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    //发件人邮件用户名,授权码
                    return new PasswordAuthentication("1065124066@@qq.com","nzyozzzdqvpvbbai");
                }
            });
    
            //2、通过session得到transport对象
            Transport ts=session.getTransport();
    
            //3、使用邮箱的用户名和授权码连上邮件服务器
            ts.connect("smtp.qq.com","1065124066@@qq.com","nzyozzzdqvpvbbai");
    
            //4、创建邮件
            MimeMessage message = new MimeMessage(session);
    
            //指明邮件的人
            message.setRecipient(Message.RecipientType.TO,new InternetAddress("1065124066@@qq.com"));
    
            //指明邮件的发件人
            message.setFrom(new InternetAddress("1065124066@@qq.com"));
    
            //邮件的标题
            message.setSubject("Hello");
    
            //邮件的文本内容
            message.setContent("<h1 style='color: red'>你好啊</h1>","text/html;charset=UTF-8");
    
            //5、发送邮件
            ts.sendMessage(message,message.getAllRecipients());
    
            //6、关闭连接
            ts.close();
        }
    }
    
    

    3.2、发送复杂邮件(超文本)

    在这里插入图片描述

    package com.hao.mail;
    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import java.util.Properties;
    
    /**
     * @author 许浩
     * @date 2020/7/23 - 21:19
     */
    public class MailDemo02 {
        public static void main(String[] args) throws Exception {
    
            Properties prop = new Properties();
            prop.setProperty("mail.host", "smtp.qq.com");//设置QQ邮件服务器
            prop.setProperty("mail.transport.protocol", "smtp");//邮件发送协议
            prop.setProperty("mail.smtp.auth", "true");//需要验证用户名和密码
    
            //关于QQ邮箱,还要设置SSL加密
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable", "true");
            prop.put("mail.smtp.ssl.socketFactory", sf);
    
            //使用JavaMail发送邮件的5个步骤
    
            //1、创建定义整个应用程序所需的环境信息的Session对象
            //QQ才有,其他不用
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    //发件人邮件用户名,授权码
                    return new PasswordAuthentication("1065124066@@qq.com", "授权码");
                }
            });
    
            //可以通过session开启Debug模式,查看所有的进程
            session.setDebug(true);
    
            //2、通过session得到transport对象
            Transport ts = session.getTransport();
    
            //3、使用邮箱的用户名和授权码连上邮件服务器
            ts.connect("smtp.qq.com", "1065124066@@qq.com", "授权码");
    
            //4、创建邮件
            MimeMessage message = new MimeMessage(session);
    
            //指明邮件的人
            message.setRecipient(Message.RecipientType.TO, new InternetAddress("1065124066@@qq.com"));
    
            //指明邮件的发件人
            message.setFrom(new InternetAddress("1065124066@@qq.com"));
    
            //邮件的标题
            message.setSubject("Hello");
    
            //邮件的文本内容
            //准备图片数据
            MimeBodyPart image = new MimeBodyPart();
            //DataHandler:数据处理
            DataHandler dh = new DataHandler(new FileDataSource("src/resources/bz.jpg"));
            image.setDataHandler(dh);//在外面的Body中放入这个除了图片的数据
            image.setContentID("bz.jpg");   //给图片设置一个ID,后面可以使用
    
            //准备正文数据
            MimeBodyPart text = new MimeBodyPart();
            text.setContent("这是一封邮件正文带图片<img src='cid:bz.jpg'>的邮件", "text/html;charset=UTF-8");
    
            //描述数据关系
            MimeMultipart mm = new MimeMultipart();
            mm.addBodyPart(text);
            mm.addBodyPart(image);
            mm.setSubType("related");
    
            //设置到消息中,保存修改
            message.setContent(mm);
            message.saveChanges();
    
            //5、发送邮件
            ts.sendMessage(message, message.getAllRecipients());
    
            //6、关闭连接
            ts.close();
        }
    }
    

    4、网络中的邮件

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>$Title$</title>
    </head>
    <body>
    
    <form action="${pageContext.request.contextPath}/RegisterServlet.do" ,method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        邮箱:<input type="email" name="email"><br>
        <input type="submit" value="注册">
    </form>
    
    </body>
    </html>
    
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>$Title$</title>
    </head>
    <body>
    
    <h1>注册成功</h1>
    
    </body>
    </html>
    
    

    pojo

    package com.hao.pojo;
    
    import java.io.Serializable;
    
    /**
     * @author 许浩
     * @date 2020/7/24 - 14:48
     */
    public class User implements Serializable {
    
        private String username;
        private String password;
        private String email;
    
        public User() {
        }
    
        public User(String username, String password, String email) {
            this.username = username;
            this.password = password;
            this.email = email;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", email='" + email + '\'' +
                    '}';
        }
    }
    
    

    servlet

    package com.hao.servlet;
    
    import com.hao.pojo.User;
    import com.hao.util.Sendmail;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * @author 许浩
     * @date 2020/7/24 - 14:40
     */
    public class RegisterServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //接收用户请求,封装成对象
            String username = req.getParameter("username");
            String password = req.getParameter("password");
            String email = req.getParameter("email");
    
            User user = new User(username, password, email);
    
            Sendmail send = new Sendmail(user);
            new Thread(send).start();
    
            req.setAttribute("message","注册成功,我们以通过邮件反馈给您,请注意查收");
            req.getRequestDispatcher("info.jsp").forward(req,resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    }
    
    

    util

    package com.hao.util;
    
    import com.hao.pojo.User;
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.util.Properties;
    
    /**
     * @author 许浩
     * @date 2020/7/23 - 21:19
     */
    public class Sendmail implements Runnable{
    
        //用于给用户发送的邮件的邮箱
        private String from="1065124066@qq.com";
        //邮箱的用户名
        private String username="1065124066@qq.com";
        //邮箱的密码
        private String password="nzyozzzdqvpvbbai";
        //发送邮件的服务器地址
        private String host="smtp.qq.com";
    
        public User user;
        public Sendmail(User user){
            this.user=user;
        }
    
    
        public void run() {
            try {
                Properties prop = new Properties();
                prop.setProperty("mail.host", "smtp.qq.com");//设置QQ邮件服务器
                prop.setProperty("mail.transport.protocol", "smtp");//邮件发送协议
                prop.setProperty("mail.smtp.auth", "true");//需要验证用户名和密码
    
                //关于QQ邮箱,还要设置SSL加密
                MailSSLSocketFactory sf = new MailSSLSocketFactory();
                sf.setTrustAllHosts(true);
                prop.put("mail.smtp.ssl.enable", "true");
                prop.put("mail.smtp.ssl.socketFactory", sf);
    
                //使用JavaMail发送邮件的5个步骤
    
                //1、创建定义整个应用程序所需的环境信息的Session对象
                //QQ才有,其他不用
                Session session = Session.getDefaultInstance(prop, new Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        //发件人邮件用户名,授权码
                        return new PasswordAuthentication("1065124066@@qq.com", "授权码");
                    }
                });
    
                //可以通过session开启Debug模式,查看所有的进程
                session.setDebug(true);
    
                //2、通过session得到transport对象
                Transport ts = session.getTransport();
    
                //3、使用邮箱的用户名和授权码连上邮件服务器
                ts.connect("smtp.qq.com", "1065124066@@qq.com", "授权码");
    
                //4、创建邮件
                MimeMessage message = new MimeMessage(session);
                //指明收邮件的人
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail()));
                //指明邮件的发件人
                message.setFrom(new InternetAddress(from));
                //邮件的标题
                message.setSubject("用户注册邮件");
                String info="恭喜您注册成功,您的用户名:"+user.getUsername()+",您的密码:"+user.getPassword()+",请您妥善保管你的账号和密码";
    
                //邮件的文本内容
                message.setContent(info, "text/html;charset=UTF-8");
    
                //5、发送邮件
                ts.sendMessage(message, message.getAllRecipients());
    
                //6、关闭连接
                ts.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    
    
    展开全文
  • Java实现邮件发送

    万次阅读 多人点赞 2019-07-20 16:03:19
    Java实现邮件发送 一、邮件服务器与传输协议 要在网络上实现邮件功能,必须要有专门邮件服务器。这些邮件服务器类似于现实生活中邮局,它主要负责接收用户投递过来邮件,并把邮件投递到邮件接收者电子邮箱...

    Java实现邮件发送

    一、邮件服务器与传输协议

    • 要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。

    • SMTP服务器地址:一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com。

    • SMTP协议

      通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

    • POP3协议

      通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。

    二、Java发送邮件

    在这里插入图片描述
    使用到的jar包:

    • mail.jar
    • activation.jar

    QQ邮箱需获取相应的权限:

    QQ邮箱–>邮箱设置–>账户–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 开启POP3/SMTP服务,然后获取16位授权码(注意不要将授权码泄露,一个账户可以拥有多个授权码)
    在这里插入图片描述
    Java实现纯文本邮件发送

    package org.westos.email;
    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.security.GeneralSecurityException;
    import java.util.Properties;
    
    public class SendEamil {
        public static void main(String[] args) throws MessagingException, GeneralSecurityException {
            //创建一个配置文件并保存
            Properties properties = new Properties();
    
            properties.setProperty("mail.host","smtp.qq.com");
    
            properties.setProperty("mail.transport.protocol","smtp");
    
            properties.setProperty("mail.smtp.auth","true");
    
    
            //QQ存在一个特性设置SSL加密
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.ssl.socketFactory", sf);
    
            //创建一个session对象
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("619046217@qq.com","16位授权码");
                }
            });
    
            //开启debug模式
            session.setDebug(true);
    
            //获取连接对象
            Transport transport = session.getTransport();
    
            //连接服务器
            transport.connect("smtp.qq.com","619046217@qq.com","16位授权码");
    
            //创建邮件对象
            MimeMessage mimeMessage = new MimeMessage(session);
    
            //邮件发送人
            mimeMessage.setFrom(new InternetAddress("619046217@qq.com"));
    
            //邮件接收人
            mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("875203654@qq.com"));
    
            //邮件标题
            mimeMessage.setSubject("Hello Mail");
    
            //邮件内容
            mimeMessage.setContent("我的想法是把代码放进一个循环里","text/html;charset=UTF-8");
    
            //发送邮件
            transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
    
            //关闭连接
            transport.close();
        }
    }
    

    Java实现文本图片附件复杂的邮件发送
    MIME(多用途互联网邮件扩展类型)

    MimeBodyPart类

    javax.mail.internet.MimeBodyPart类 表示的是一个MIME消息,它和MimeMessage类一样都是从Part接口继承过来。

    MimeMultipart类

    javax.mail.internet.MimeMultipart是抽象类 Multipart的实现子类,它用来组合多个MIME消息。一个MimeMultipart对象可以包含多个代表MIME消息的MimeBodyPart对象

    package org.westos.email;
    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.security.GeneralSecurityException;
    import java.util.Properties;
    
    public class SendComplexEmail {
        public static void main(String[] args) throws GeneralSecurityException, MessagingException {
            Properties prop = new Properties();
            prop.setProperty("mail.host", "smtp.qq.com");  设置QQ邮件服务器
            prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
            prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
    
            // QQ邮箱设置SSL加密
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable", "true");
            prop.put("mail.smtp.ssl.socketFactory", sf);
    
            //1、创建定义整个应用程序所需的环境信息的 Session 对象
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    //传入发件人的姓名和授权码
                    return new PasswordAuthentication("619046217@qq.com","16位授权码");
                }
            });
    
            //2、通过session获取transport对象
            Transport transport = session.getTransport();
    
            //3、通过transport对象邮箱用户名和授权码连接邮箱服务器
            transport.connect("smtp.qq.com","619046217@qq.com","16位授权码");
    
            //4、创建邮件,传入session对象
            MimeMessage mimeMessage = complexEmail(session);
    
            //5、发送邮件
            transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
    
            //6、关闭连接
            transport.close();
    
    
        }
    
        public static MimeMessage complexEmail(Session session) throws MessagingException {
            //消息的固定信息
            MimeMessage mimeMessage = new MimeMessage(session);
    
            //发件人
            mimeMessage.setFrom(new InternetAddress("619046217@qq.com"));
            //收件人
            mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("619046217@qq.com"));
            //邮件标题
            mimeMessage.setSubject("带图片和附件的邮件");
    
            //邮件内容
            //准备图片数据
            MimeBodyPart image = new MimeBodyPart();
            DataHandler handler = new DataHandler(new FileDataSource("E:\\IdeaProjects\\WebEmail\\resources\\测试图片.png"));
            image.setDataHandler(handler);
            image.setContentID("test.png"); //设置图片id
    
            //准备文本
            MimeBodyPart text = new MimeBodyPart();
            text.setContent("这是一段文本<img src='cid:test.png'>","text/html;charset=utf-8");
    
            //附件
            MimeBodyPart appendix = new MimeBodyPart();
            appendix.setDataHandler(new DataHandler(new FileDataSource("E:\\IdeaProjects\\WebEmail\\resources\\测试文件.txt")));
            appendix.setFileName("test.txt");
    
            //拼装邮件正文
            MimeMultipart mimeMultipart = new MimeMultipart();
            mimeMultipart.addBodyPart(image);
            mimeMultipart.addBodyPart(text);
            mimeMultipart.setSubType("related");//文本和图片内嵌成功
    
            //将拼装好的正文内容设置为主体
            MimeBodyPart contentText = new MimeBodyPart();
            contentText.setContent(mimeMultipart);
    
            //拼接附件
            MimeMultipart allFile = new MimeMultipart();
            allFile.addBodyPart(appendix);//附件
            allFile.addBodyPart(contentText);//正文
            allFile.setSubType("mixed"); //正文和附件都存在邮件中,所有类型设置为mixed
    
    
            //放到Message消息中
            mimeMessage.setContent(allFile);
            mimeMessage.saveChanges();//保存修改
    
            return mimeMessage;
        }
    }
    
    

    JavaWeb发送邮件(网站注册成功发送提示邮件)

    1. User

      package org.westos.mail;
      
      public class User {
          private String name;
          private String password;
          private String mail;
      
          public User() {
          }
      
          public User(String name, String password, String mail) {
              this.name = name;
              this.password = password;
              this.mail = mail;
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public String getPassword() {
              return password;
          }
      
          public void setPassword(String password) {
              this.password = password;
          }
      
          public String getMail() {
              return mail;
          }
      
          public void setMail(String mail) {
              this.mail = mail;
          }
      
          @Override
          public String toString() {
              return "User{" +
                      "name='" + name + '\'' +
                      ", password='" + password + '\'' +
                      ", mail='" + mail + '\'' +
                      '}';
          }
      }
      
      
    2. Servlet

      package org.westos.mail;
      
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      
      public class Servlet extends javax.servlet.http.HttpServlet {
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              doGet(request,response);
          }
      
          protected void doGet(HttpServletRequest request, HttpServletResponse response) {
              //处理前端请求
              String username = request.getParameter("username");
              String password = request.getParameter("password");
              String email = request.getParameter("email");
      
              //将信息封装进user对象
              User user = new User(username, password, email);
      
              SendMail sendMail = new SendMail(user);
              sendMail.start(); //开启线程
      
              request.setAttribute("msg","发送成功");
              try {
                  request.getRequestDispatcher("msg.jsp").forward(request,response);
              } catch (ServletException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              }
      
      
          }
      }
      
      
    3. SengMail

      package org.westos.mail;
      
      import com.sun.mail.util.MailSSLSocketFactory;
      
      import javax.mail.*;
      import javax.mail.internet.AddressException;
      import javax.mail.internet.InternetAddress;
      import javax.mail.internet.MimeMessage;
      import java.security.GeneralSecurityException;
      import java.security.PublicKey;
      import java.util.Properties;
      
      public class SendMail extends Thread {
          //发件人信息
          private String From = "619046217@qq.com";
          //发件人邮箱
          private String recipient = "619046217@qq.com";
          //邮箱密码
          private String password = "16位授权码";
          //邮件发送的服务器
          private String host = "smtp.qq.com";
      
          //收件人信息
          private User user;
          public SendMail(User user){
              this.user = user;
          }
      
          @Override
          public void run() {
              try {
                  Properties properties = new Properties();
      
                  properties.setProperty("mail.host","smtp.qq.com");
      
                  properties.setProperty("mail.transport.protocol","smtp");
      
                  properties.setProperty("mail.smtp.auth","true");
      
                  //QQ存在一个特性设置SSL加密
                  MailSSLSocketFactory sf = null;
                  try {
                      sf = new MailSSLSocketFactory();
                  } catch (GeneralSecurityException e) {
                      e.printStackTrace();
                  }
                  sf.setTrustAllHosts(true);
                  properties.put("mail.smtp.ssl.enable", "true");
                  properties.put("mail.smtp.ssl.socketFactory", sf);
      
                  //创建一个session对象
                  Session session = Session.getDefaultInstance(properties, new Authenticator() {
                      @Override
                      protected PasswordAuthentication getPasswordAuthentication() {
                          return new PasswordAuthentication(recipient,password);
                      }
                  });
      
                  //开启debug模式
                  session.setDebug(true);
      
                  //获取连接对象
                  Transport transport = null;
                  try {
                      transport = session.getTransport();
                  } catch (NoSuchProviderException e) {
                      e.printStackTrace();
                  }
      
                  //连接服务器
                  transport.connect(host,From,password);
      
      
                  //创建一个邮件发送对象
                  MimeMessage mimeMessage = new MimeMessage(session);
                  //邮件发送人
                  mimeMessage.setFrom(new InternetAddress(recipient));
      
                  //邮件接收人
                  mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(user.getMail()));
      
                  //邮件标题
                  mimeMessage.setSubject("网站注册成功");
      
                  //邮件内容
                  mimeMessage.setContent("网站注册成功,密码为"+user.getPassword()+",请妥善保管密码","text/html;charset=UTF-8");
      
                  //发送邮件
                  transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
      
                  transport.close();
      
              }catch (Exception e){
                  e.printStackTrace();
              }
      
          }
      
      }
      
      
      
    4. register.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
          <title>注册页面</title>
      </head>
      <body>
      
      <form action="${pageContext.request.contextPath}/a.do" method="post">
          <p>用户名:<input type="text" name="username" required></p>
          <p>密码:<input type="password" name="password" required></p>
          <p>邮箱:<input type="email" name="email" required></p>
          <p><input type="submit" value="提交"></p>
      </form>
      </body>
      </html>
      
      
    5. msg.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
          <title>Title</title>
      </head>
      <body>
      ${msg}
      </body>
      </html>
      
      
    6. web.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
               version="4.0">
          <servlet>
              <servlet-name>Servlet</servlet-name>
              <servlet-class>org.westos.mail.Servlet</servlet-class>
          </servlet>
      
          <servlet-mapping>
              <servlet-name>Servlet</servlet-name>
              <url-pattern>/a.do</url-pattern>
          </servlet-mapping>
      </web-app>
      
    展开全文
  • 邮件发送-JavaWeb

    2019-09-25 21:30:23
    邮件发送 邮件发送所依赖的协议 SMTP协议(发送邮件) SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种...通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。 P...

    邮件发送

    邮件发送所依赖的协议

    1. SMTP协议(发送邮件)

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供与来信有关的通知。
    通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

    1. POP3协议(接收邮件)

    POP3,全名为"Post Office Protocol - Version 3",是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。
    POP 协议支持"离线"邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或 MAC。一旦邮件发送到 PC 机或MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以"只下载邮件,服务器端并不删除",也就是改进的POP3协议。
    通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。

    邮件收发原理

    在这里插入图片描述
    A向B发送文件

    1. A通过smtp协议连接到Smtp服务器,然后发送一封邮件给网易的邮件服务器
    2. 网易服务器分析发现对方使用QQ的邮件服务器,则通过smtp协议将邮件转投给QQ的Smtp服务器
    3. QQ的Smtp服务器接收到来自于网易服务器发来的A的邮件,将其存在B的邮箱空间,并通知B有新的邮件
    4. B收到通知后,通过pop3协议连接到pop3服务器,来查看邮件信息
    5. pop3服务器将A的邮件取出,并交付给B;

    注意】有可能收件人地址,发件人地址等信息都正确了,控制台也打印了正确的信息,但是在收件箱就是收不到信息。这是因为可能收件箱服务器拒收了你发的邮件(比如认为你的邮件是广告),这时候可能在垃圾箱里能找到,可能找不到。解决办法是重复的邮件内容不要多次发送,或者更换收件箱试试

    Java发送邮件

    前期jar包准备

    • mail.jar
    • activation.jar

    编码过程准则

    • 创建包含邮件服务器的网络连接信息的Session对象。
    • 创建代表邮件内容的Message对象
    • 创建Transport对象,连接服务器,发送Message,关闭连接

    纯文本邮件
    1. 先在项目中导入jar包
    2. 获取QQ邮箱授权码(登录qq邮箱->转入设置->转入账户,然后如图操作)
      在这里插入图片描述
    3. 测试代码
    import com.sun.mail.util.MailSSLSocketFactory;
    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    public class SendEmail {
        public static void main(String[] args) throws Exception {
            Properties prop = new Properties();
            prop.setProperty("mail.host", "smtp.qq.com");  设置QQ邮件服务器
            prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
            prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
            // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable", "true");
            prop.put("mail.smtp.ssl.socketFactory", sf);
            //使用JavaMail发送邮件的5个步骤
    
            //1. 创建定义整个应用程序所需的环境信息的 Session 对象
    
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    //发件人邮件用户名、授权码
                    return new PasswordAuthentication("xxxxxx@qq.com", "授权码");
                }
            });
            //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
            session.setDebug(true);
            //2、通过session得到transport对象
            Transport ts = session.getTransport();
            //3、使用邮箱的用户名和授权码连上邮件服务器
            ts.connect("smtp.qq.com", "xxxxxx@qq.com", "授权码");
            //4、创建邮件
            //创建邮件对象
            MimeMessage message = new MimeMessage(session);
            //指明邮件的发件人
            message.setFrom(new InternetAddress("xxxxxx@qq.com"));
            //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
            message.setRecipient(Message.RecipientType.TO, new InternetAddress("xxx"));
            //邮件的标题
            message.setSubject("只包含文本的简单邮件");
            //邮件的文本内容
            message.setContent("你好啊!", "text/html;charset=UTF-8");
            //5、发送邮件
            ts.sendMessage(message, message.getAllRecipients());
            //关闭连接
            ts.close();
        }
    }
    
    拥有图片和附件的邮件

    MIME(多用途互联网邮件扩展类型)

    MimeBodyPart类

    javax.mail.internet.MimeBodyPart类 表示的是一个MIME消息,它和MimeMessage类一样都是从Part接口继承过来。

    MimeMultipart类

    javax.mail.internet.MimeMultipart是抽象类 Multipart的实现子类,它用来组合多个MIME消息。一个MimeMultipart对象可以包含多个代表MIME消息的MimeBodyPart对象。

    在这里插入图片描述

    创建包含内嵌图片的邮件

    在前面是单独的使用HTML或者是纯文本内容,但有时需要在纯文本中使用内嵌的方式显示一些图片,因此就要将纯文本和内嵌图片单独存放在MimeBodyPart中然后再将其存放在一个Mimemultipart对象中即可。

    import com.sun.mail.util.MailSSLSocketFactory;
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import java.util.Properties;
    public class SendImageEmail {
        public static void main(String[] args) throws Exception {
            Properties prop = new Properties();
            prop.setProperty("mail.host", "smtp.qq.com");  设置QQ邮件服务器
            prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
            prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
            // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable", "true");
            prop.put("mail.smtp.ssl.socketFactory", sf);
            //使用JavaMail发送邮件的5个步骤
    
            //1、创建定义整个应用程序所需的环境信息的 Session 对象
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    //发件人邮件用户名、授权码
                    return new PasswordAuthentication("xxxxxxx@qq.com", "授权码");
                }
            });
            //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
            session.setDebug(true);
            //2、通过session得到transport对象
            Transport ts = session.getTransport();
            //3、使用邮箱的用户名和授权码连上邮件服务器
            ts.connect("smtp.qq.com", "xxxxxxxx@qq.com", "授权码");
            //4、创建邮件
            //创建邮件
            MimeMessage message = new MimeMessage(session);
            // 设置邮件的基本信息
            //发件人
            message.setFrom(new InternetAddress("xxxxxxx@qq.com"));
            //收件人
            message.setRecipient(Message.RecipientType.TO, new InternetAddress("xxxxxxx@qq.com"));
            //邮件标题
            message.setSubject("带图片的邮件");
            // 准备邮件数据
            // 准备图片数据
            MimeBodyPart image = new MimeBodyPart();
            DataHandler dh = new DataHandler(new FileDataSource("src/resources/bz.jpg"));
            image.setDataHandler(dh);
            image.setContentID("bz.jpg");
            // 准备正文数据
            MimeBodyPart text = new MimeBodyPart();
            text.setContent("这是一封邮件正文带图片<img src='cid:bz.jpg'>的邮件", "text/html;charset=UTF-8");
            // 描述数据关系
            MimeMultipart mm = new MimeMultipart();
            mm.addBodyPart(text);
            mm.addBodyPart(image);
            mm.setSubType("related");
            //设置到消息中,保存修改
            message.setContent(mm);
            message.saveChanges();
            //5.发送邮件
            ts.sendMessage(message, message.getAllRecipients());
            ts.close();
        }
    }
    
    带图片和附件的复杂邮件发送
    import com.sun.mail.util.MailSSLSocketFactory;
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import java.security.GeneralSecurityException;
    import java.util.Properties;
    
    public class SendFileMail {
        public static void main(String[] args) throws MessagingException, GeneralSecurityException {
    
            //创建一个配置文件保存并读取信息
            Properties properties = new Properties();
    
            //设置qq邮件服务器
            properties.setProperty("mail.host","smtp.qq.com");
            //设置发送的协议
            properties.setProperty("mail.transport.protocol","smtp");
            //设置用户是否需要验证
            properties.setProperty("mail.smtp.auth", "true");
    
    
            //=================================只有QQ存在的一个特性,需要建立一个安全的链接
            // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.ssl.socketFactory", sf);
    
            //=================================准备工作完毕
    
            //1.创建一个session会话对象;
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("xxxxxx@qq.com", "授权码");
                }
            });
    
            //可以通过session开启Dubug模式,查看所有的过程
            session.setDebug(true);
    
    
            //2.获取连接对象,通过session对象获得Transport,需要捕获或者抛出异常;
            Transport tp = session.getTransport();
    
            //3.连接服务器,需要抛出异常;
            tp.connect("smtp.qq.com","xxxxxxx@qq.com","授权码");
    
            //4.连接上之后我们需要发送邮件;
            MimeMessage mimeMessage = imageMail(session);
    
            //5.发送邮件
            tp.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
    
            //6.关闭连接
            tp.close();
        }
        public static MimeMessage imageMail(Session session) throws MessagingException {
    
            //消息的固定信息
            MimeMessage mimeMessage = new MimeMessage(session);
            //邮件发送人
            mimeMessage.setFrom(new InternetAddress("xxxxxxx@qq.com"));
            //邮件接收人,可以同时发送给很多人,我们这里只发给自己;
            mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("xxxxxxxxxx@qq.com"));
            mimeMessage.setSubject("我也不知道是个什么东西就发给你了"); //邮件主题
            /*
            编写邮件内容
            1.图片
            2.附件
            3.文本
             */
            //图片
            MimeBodyPart body1 = new MimeBodyPart();
            body1.setDataHandler(new DataHandler(new FileDataSource("src/resources/yhbxb.png")));
            body1.setContentID("yhbxb.png"); //图片设置ID
    
            //文本
            MimeBodyPart body2 = new MimeBodyPart();
            body2.setContent("请注意,我不是广告<img src='cid:yhbxb.png'>","text/html;charset=utf-8");
    
            //附件
            MimeBodyPart body3 = new MimeBodyPart();
            body3.setDataHandler(new DataHandler(new FileDataSource("src/resources/log4j.properties")));
            body3.setFileName("log4j.properties"); //附件设置名字
    
            MimeBodyPart body4 = new MimeBodyPart();
            body4.setDataHandler(new DataHandler(new FileDataSource("src/resources/1.txt")));
            body4.setFileName(""); //附件设置名字
    
            //拼装邮件正文内容
            MimeMultipart multipart1 = new MimeMultipart();
            multipart1.addBodyPart(body1);
            multipart1.addBodyPart(body2);
            multipart1.setSubType("related"); //1.文本和图片内嵌成功!
    
            //new MimeBodyPart().setContent(multipart1); //将拼装好的正文内容设置为主体
            MimeBodyPart contentText =  new MimeBodyPart();
            contentText.setContent(multipart1);
    
            //拼接附件
            MimeMultipart allFile =new MimeMultipart();
            allFile.addBodyPart(body3); //附件
            allFile.addBodyPart(body4); //附件
            allFile.addBodyPart(contentText);//正文
            allFile.setSubType("mixed"); //正文和附件都存在邮件中,所有类型设置为mixed;
            //放到Message消息中
            mimeMessage.setContent(allFile);
            mimeMessage.saveChanges();//保存修改
            return mimeMessage;
        }
    }
    

    JavaWeb发送邮件

    网站都提供有用户注册功能,通常注册成功之后就会收到一封来自注册网站的邮件。邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息。
    代码实现:

    1. 新建一个JavaWeb项目,配置tomcat,添加jar包

    2. 编写对应的用户实体类

    package com.pojo;
    public class User {
        private String username;
        private String password;
        private String email;
        public User() {
        }
        public User(String username, String password, String email) {
            this.username = username;
            this.password = password;
            this.email = email;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        @Override
        public String toString() {
            return "User{" +
                    "username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", email='" + email + '\'' +
                    '}';
        }
    }
    
    1. 前端注册页面
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>注册</title>
    </head>
    <body>
    
    <form action="${pageContext.request.contextPath}/RegisterServlet.do" method="post">
        用户名:<input type="text" name="username"><br/>
        密码:<input type="password" name="password"><br/>
        邮箱:<input type="text" name="email"><br/>
        <input type="submit" value="注册">
    </form>
    
    </body>
    </html>
    
    1. 邮件发送工具类
    package com.utils;
    import com.pojo;
    import com.sun.mail.util.MailSSLSocketFactory;
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.util.Properties;
    public class Sendmail extends Thread {
    
        //用于给用户发送邮件的邮箱
        private String from = "xxxxxxxxxxx@qq.com";
        //邮箱的用户名
        private String username = "xxxxxxxxxxx@qq.com";
        //邮箱的密码
        private String password = "授权码";
        //发送邮件的服务器地址
        private String host = "smtp.qq.com";
        private User user;
        public Sendmail(User user){
            this.user = user;
        }
        //重写run方法的实现,在run方法中发送邮件给指定的用户
        @Override
        public void run() {
            try{
                Properties prop = new Properties();
                prop.setProperty("mail.host", host);
                prop.setProperty("mail.transport.protocol", "smtp");
                prop.setProperty("mail.smtp.auth", "true");
    
                // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
                MailSSLSocketFactory sf = new MailSSLSocketFactory();
                sf.setTrustAllHosts(true);
                prop.put("mail.smtp.ssl.enable", "true");
                prop.put("mail.smtp.ssl.socketFactory", sf);
    
                //1、创建定义整个应用程序所需的环境信息的 Session 对象
                Session session = Session.getDefaultInstance(prop, new Authenticator() {
                    public PasswordAuthentication getPasswordAuthentication() {
                        //发件人邮件用户名、授权码
                        return new PasswordAuthentication("xxxxxxxxxxx@qq.com", "授权码");
                    }
                });
    
                //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
                session.setDebug(true);
    
                //2、通过session得到transport对象
                Transport ts = session.getTransport();
    
                //3、使用邮箱的用户名和授权码连上邮件服务器
                ts.connect(host, username, password);
    
                //4、创建邮件
                MimeMessage message = new MimeMessage(session);
                message.setFrom(new InternetAddress(from)); //发件人
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail())); //收件人
                message.setSubject("用户注册邮件"); //邮件的标题
    
                String info = "恭喜您注册成功,您的用户名:" + user.getUsername() + ",您的密码:" + user.getPassword() + ",请妥善保管,如有问题请联系网站客服!!";
    
                message.setContent(info, "text/html;charset=UTF-8");
                message.saveChanges();
    
                //发送邮件
                ts.sendMessage(message, message.getAllRecipients());
                ts.close();
            }catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
    
    
    5. 编写对应的servlet处理类
    
    
    import 用户实体类所在的包;
    import com.utils;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class RegisterServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            try {
                //接收用户请求,封装成对象
                String username = request.getParameter("username");
                String password = request.getParameter("password");
                String email = request.getParameter("email");
                User user = new User(username,password,email);
    
                //用户注册成功之后,给用户发送一封邮件
                //我们使用线程来专门发送邮件,防止出现耗时,和网站注册人数过多的情况;
                Sendmail send = new Sendmail(user);
                //启动线程,线程启动之后就会执行run方法来发送邮件
                send.start();
    
                //注册用户
                request.setAttribute("message", "注册成功,我们已经发了一封带了注册信息的电子邮件,请查收!如网络不稳定,可能过会儿才能收到!!");
                request.getRequestDispatcher("info.jsp").forward(request, response);
            } catch (Exception e) {
                e.printStackTrace();
                request.setAttribute("message", "注册失败!!");
                request.getRequestDispatcher("info.jsp").forward(request, response);
            }
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    
    展开全文
  • 邮件传输协议

    2020-01-12 11:15:22
    因此,我们通常也把处理用户smtp请求(邮件发送请求)服务器称之为SMTP服务器(邮件发送服务器),通俗来说SMTP协议是用来发送邮件 POP3/IMAP协议 POP3协议允许电子邮件客户端下载服务器上邮件,但是在客户...

    邮件传输协议

    SMTP协议

          用户连接上邮件服务器之后,要想给它发送一封电子邮件,需要遵循一定的通讯规则,SMTP协议就是用来定义这种通讯规则的。因此,我们通常也把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器),通俗来说SMTP协议是用来发送邮件的

    POP3/IMAP协议

          POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的

     

          IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。

          两个协议都是用来接收邮件的

     

    常见的邮箱及对应协议

     

    QQ邮箱

    类型

    服务器名称

    服务器地址

    非SSL协议端口

    SSL协议端口

    发件服务器

    SMTP

    smtp.qq.com

    25

    465/587

    收件服务器

    POP

    pop.qq.com

    110

    995

    收件服务器

    IMAP

    imap.qq.com

    143

    993

     

     

     

    163邮箱

    类型

    服务器名称

    服务器地址

    非SSL协议端口

    SSL协议端口

    发件服务器

    SMTP

    smtp.163.com

    25

    465/994

    收件服务器

    POP

    pop.163.com

    110

    995

    收件服务器

    IMAP

    imap.163.com

    143

    993

     

    sohu邮箱

    类型

    服务器名称

    服务器地址

    非SSL协议端口

    SSL协议端口

    发件服务器

    SMTP

    smtp.sohu.com

    25

     

    收件服务器

    POP

    pop3.sohu.com

    110

     

    126邮箱

    类型

    服务器名称

    服务器地址

    非SSL协议端口

    SSL协议端口

    发件服务器

    SMTP

    smtp.126.com

    25

     

    收件服务器

    POP

    pop.126.com

    110

     

    139邮箱

    类型

    服务器名称

    服务器地址

    非SSL协议端口

    SSL协议端口

    发件服务器

    SMTP

    smtp.139.com

    25

     

    收件服务器

    POP

    pop.139.com

    110

     

    QQ企业邮箱

    类型

    服务器名称

    服务器地址

    非SSL协议端口

    SSL协议端口

    发件服务器

    SMTP

    smtp.exmail.qq.com

     

    587/465

    收件服务器

    POP

    pop.exmail.qq.com

     

    995

    Foxmail

    类型

    服务器名称

    服务器地址

    非SSL协议端口

    SSL协议端口

    发件服务器

    SMTP

    SMTP.foxmail.com

    25

     

    收件服务器

    POP

    POP.foxmail.com

    110

     

    china.com:

    类型

    服务器名称

    服务器地址

    非SSL协议端口

    SSL协议端口

    发件服务器

    SMTP

    smtp.china.com

    25

     

    收件服务器

    POP

    pop.china.com

    110

     

    yahoo.com

    类型

    服务器名称

    服务器地址

    非SSL协议端口

    SSL协议端口

    发件服务器

    SMTP

    smtp.mail.yahoo.com

    587

     

    收件服务器

    POP

    pop.mail.yahoo.com

    995

     

     

     

     

     

     

     

    展开全文
  • JAVA实现邮件发送

    2020-07-04 22:52:37
    一、邮件服务器与传输协议 要在网络上实现邮件...SMTP协议:通常把处理用户smtp请求(邮件发送请求)服务器称之为SMTP服务器(邮件发送服务器)。 POP3协议:通常把处理用户pop3请求(邮件接收请求)服务器称之为POP
  • 通常把处理用户smtp请求(邮件发送请求)服务器称之为SMTP服务器(邮件发送服务器)。 接收邮件:POP3协议 通常把处理用户pop3请求(邮件接收请求)服务器称之为POP3服务器(邮件接收服务器)。 SMTP服务器地址:一般是 ...
  • java实现邮件发送原生

    2020-11-30 00:21:33
    Java实现邮件发送 一、邮件服务器与传输协议 要在网络上实现邮件功能,...通常把处理用户smtp请求(邮件发送请求)服务器称之为SMTP服务器(邮件发送服务器)。 POP3协议 通常把处理用户pop3请求(邮件接收请求)服务器
  • Java Servlet邮件发送

    2019-07-22 21:44:09
    电子邮件 要在网络上实现邮件功能,必须要有专门邮件服务器。 ... 电子邮箱(E-Mail地址)获得需要在邮件服务器上进行申请。比如我们要使用QQ邮箱,就需要...我们通常把处理用户smtp请求(邮件发送请求)服务器称之为...
  • 一、邮件简介 1、邮件服务器与传输协议 邮件服务器:要在网络上实现...SMTP服务器:通常把处理用户 smtp 请求(邮件发送请求)服务器称之为SMTP服务器(邮件发送服务器)。 POP3服务器:通常把处理用户 pop3 请求(邮
  • 用java实现邮件发送

    2020-12-06 22:53:14
    电子邮件 1、基础知识铺垫 要在网络上实现邮件功能,必须要有专门的邮件服务器。 这些邮件服务器类似于现实生活中邮局,它主要负责接收用户投递过的邮件,并把邮件投递到邮件接收...我们通常把处理用户smtp请求(邮件
  • 功能分析 ... 而实现该功能必须要有专门邮件服务器。...我们通常把处理用户 SMTP 请求(邮件发送请求服务器称之为 SMTP 服务器(邮件发送服务器);把处理用户 POP3 请求(邮件接收请求)服务器
  • 一、邮件发送工具类 1)邮件服务器与传输协议 要在网络上实现邮件功能,...通常把处理用户smtp请求(邮件发送请求)服务器称之为SMTP服务器(邮件发送服务器)。 POP3协议 通常把处理用户pop3请求(邮件接收请求)服务
  • 文章目录邮件发送原理及实现电子邮件传输协议 邮件发送原理及实现 电子邮件 要在网络上实现邮件功能,必须要有专门的邮件服务器 ...发送邮件,我们通常把处理用户smtp请求的服务器称之为SMTP服务器 POP3协议
  • 邮件收发 要想在网络上实现邮件功能,必须要有专门邮件服务器 这些邮件服务器类似显示生活中邮局,它主要接收用户投递过来...我们通常把处理用户smtp请求(邮件发送请求)服务器称之为SMTP服务器 POP3协议 接收
  • 因而,通常我们也把处理用户smtp请求(邮件发送请求邮件服务器称之为SMTP服务器。(25) POP3协议 同样,用户若想从邮件服务器管理电子邮箱中接收一封电子邮件话,他连上邮件服务器后,也需要遵循一定通迅...
  • 邮件传送

    千次阅读 2019-07-21 17:35:59
    电子邮件 电子邮件是依靠邮箱服务器来完成; ... 电子邮箱(E-Mail地址)获得需要在邮件服务器上进行申请。...通常把处理用户smtp请求(邮件发送请求)服务器称之为SMTP服务器(邮件发送服务器)。 P...
  • JAVA代码实现邮件传输

    2019-07-19 16:04:40
    SMTP服务器(用于发送邮件):用于处理用户smtp请求(邮件发送请求)。SMTP服务器地址:一般是 smtp.xxx.com,qq邮箱是smtp.qq.com。 POP3服务器(用于接收邮件):用于处理用户pop3请求(邮件接收请求)。 ...
  • 邮件服务器安全问题

    2018-03-16 12:09:00
    1、前言  要在Internet上提供电子邮件功能,必须有专门电子邮件服务器。通过邮件钓鱼行为进行投递是一种较为主流方式,通过对流量抓包总有些...因此,我们通常也把处理用户smtp请求(邮件发送请求)服务器称...
  • 最近遇到一个关于邮件的...例如,SMTP协议发送消息并处理传出邮件请求。 IMAP和POP3协议接收邮件并用于处理传入邮件邮件服务器(或电子邮件服务器)是一种发送和接收电子邮件的计算机系统。 邮件服务器使用标准电子...
  • 最近遇到一个关于邮件...例如,SMTP协议发送消息并处理传出邮件请求。 IMAP和POP3协议接收邮件并用于处理传入邮件邮件服务器(或电子邮件服务器)是一种发送和接收电子邮件的计算机系统。 邮件服务器使用标准电子...
  • SMTP是简单邮件传输协议的简称,它可以实现客户端向服务器发送邮件的功能。所以  下面所讲命令是指客户端向服务器发出请求指令,而响应则是指服务器返回给客户端信息。  SMTP分为命令头和信息体两部分。命令...
  • SMTP是简单邮件传输协议的简称,它可以实现客户端向服务器发送邮件的功能。所以 下面所讲命令是指客户端向服务器发出请求指令,而响应则是指服务器返回给客户端信息。 SMTP分为命令头和信息体两部分。命...
  • 2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响应包括一个表示返   回状态三位数字代码 3.SMTP在TCP协议25号端口监听连接请求 4.连接和发送过程 SMTP协议说复杂也不复杂...
  • 雪崩效应造成处理阻塞

    千次阅读 2008-12-19 01:17:00
    昨天(其实好久了,这是邮件内容)发现ogre4ad(一个比较适应通用通讯协议的服务器,依靠PIPE和业务进程通讯)发送数据感觉速度慢,(就像有阻塞),服务器重启动一段时间后,就会出现后端服务器进城将发送管道写...
  • 一次 请求 / 相应 服务器能实现处理的请求即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。 这就是管道(pipelining),是一种几十年来广泛使用技术...
  • 一次请求/响应服务器能实现处理的请求即使旧的请求还未被响应,这样就可以将多个命令发送到服务 器,而不用等待回复,最后在一个步骤中读取该答复。 这就是管道(pipelining),是一种几十年来广泛使用技术。...
  • 各浏览器开发商已经达成协议,对XML实行严格而挑剔解析,任何细小错误都会被报告。你可以将上面myfile.xml修改一下,比如将改为,然后用IE5直接打开myfile.xml,会得到一个出错信息页面: <title>XML轻松...
  • JavaMail

    2017-08-22 13:47:22
    一般情况下把处理smtp请求(用户发送请求)的邮件服务器称之为smtp服务器。而把处理pop3(接收)请求的邮件服务器称之为pop3服务器。 在javamail中数据有三种关系,分别为mixed,related和alternative。两...

空空如也

空空如也

1 2 3 4 5 6
收藏数 114
精华内容 45
关键字:

处理邮件发送请求的协议是