• 邮件发送的实现


    一、了解邮件发送的流程

     如上图,假如用户A使用QQ邮箱向163邮箱的使用者用户B发送邮件。用户A登录邮件客户端软件,填写收件人,主题和正文,邮件服务器按照SMTP协议将用户填写的内容进行数据格式化处理,再通过邮件服务器通过互联网发送到用户B的邮件服务器。

    用户B的邮件服务器接收到了用户A发送的邮件后会把该邮件依据SMTP协议将从互联网接收的邮件进行处理然后保存在用户B的163邮件内部存储空间,用户登录邮箱客户端后会从该163邮件内部存储空间中依照POP3协议读取存在服务器中的邮件。

    其中SMTP协议使用的端口号为25,POP3使用的端口号为110.

    二、实现邮件发送使用到的工具类

    Java如果实现邮件发送首先要导入能实现邮件发送的jar包,SUN公司提供了javaMail的jar包。

    Maven中的坐标如下

             <!-- Javamail -->
            <dependency>
                <groupId>javax.mail</groupId>
                <artifactId>mail</artifactId>
                <version>1.4.4</version>
            </dependency>
    
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>2.9.9</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.0.1</version>
            </dependency>

    添加实现邮件发送有好多工具类,下方是一个工具类MailUtil工具类,只需修改一些参数就可以直接使用。直接把该工具类放在Utils包下调用即可

    import javax.mail.Address;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.util.Properties;
    
    public class MailUtil {
    
    public static final String HOST="smtp.163.com";//"smtp.sina.com","smtp.qq.com",发送者使用的邮件服务器主机地址
    public static final String USER="";//发送者的邮箱用户名
    public static final String PASSWORD="";//发送者的邮箱密码
    /** * 实现邮件发送的方法 * @param to 收件人地址 * @param subject 主题 * @param content 内容 * @throws Exception */ public static void sendMsg(String to ,String subject ,String content) throws Exception{ Properties props = new Properties(); props.setProperty("mail.smtp.host", HOST); //设置主机地址 smtp.qq.com smtp.sina.com props.setProperty("mail.smtp.auth", "true");//认证 //2.根据以上参数产生一个相对应的用于邮件发送的Session对象 Session session = Session.getInstance(props); //3.产生一个邮件的消息对象 MimeMessage message = new MimeMessage(session); //4.设置消息的发送者 Address fromAddr = new InternetAddress(USER); message.setFrom(fromAddr); //5.设置消息的接收者 Address toAddr = new InternetAddress(to); //TO 直接发送 CC抄送 BCC密送 message.setRecipient(MimeMessage.RecipientType.TO, toAddr); //6.设置主题 message.setSubject(subject); //7.设置正文 message.setText(content); //8.准备发送,得到发送器 Transport transport = session.getTransport("smtp"); //9.建立发送器与发送服务器之间的连接,三个参数分别为发送者服务器的主机,发送者的邮箱,发送邮箱对应的密码 transport.connect(HOST, USER, PASSWORD); //10.发送邮件 transport.sendMessage(message, message.getAllRecipients()); //11.关闭 transport.close(); } }

     三、测试

    通过Junit进行测试如下

    public class mailtesst {
        @Test
        public void test() throws Exception {
            MailUtil.sendMsg("目标邮箱@163.com","重要文件","验证码是1324");
        }
    }
  • 相关阅读:
    Shell 批量搜索关键词并保存结果到文件中(数组、循环)
    解决tensorflow的Session Exception问题
    解决h5py的FutureWarning问题
    【转】Ubuntu16.04安装WPS
    [Linux] 随机切分文件内容
    [Python] 动态函数调用(通过函数名)
    [Python] dict字典的浅复制与深复制
    基于sklearn进行文本向量化
    Asp.Net MVC SingleServiceResolver类剖析
    Asp.Net MVC 高级特性(附带源码剖析)
  • 原文地址:https://www.cnblogs.com/kitor/p/11070306.html
Copyright © 2020-2023  润新知