用java实现发送邮箱 以qq邮箱为例

1.0 开发环境

  • 开发工具 idea
  • 额外jar包 mail.jar

jar包的maven地址

    <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
    <dependency >
      <groupId >com.sun.mail </groupId >
      <artifactId >javax.mail </artifactId >
      <version >1.5.4 </version >
    </dependency >

代码如下:

package com.ccut.base.util;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * Created by admin on 2018/6/24.
 */
public class SendMail {
    public SendMail(){
        //做链接前的准备工作  也就是参数初始化
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.host","smtp.qq.com");//发送邮箱服务器
        properties.setProperty("mail.smtp.port","465");//发送端口
        properties.setProperty("mail.smtp.auth","true");//是否开启权限控制
        properties.setProperty("mail.debug","true");//true 打印信息到控制台
        properties.setProperty("mail.transport","smtp");//发送的协议是简单的邮件传输协议
        properties.setProperty("mail.smtp.ssl.enable","true");
        //建立两点之间的链接
        System.out.println("执行了2");
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("[email protected]","xxxxxdfda");
            }
        });
        System.out.println("执行了3");
        //创建邮件对象
        Message message = new MimeMessage(session);
        //设置发件人
        try {
            message.setFrom(new InternetAddress("[email protected]"));

        //设置收件人
        message.setRecipient(Message.RecipientType.TO,new InternetAddress("[email protected]"));//收件人
        //设置主题
        message.setSubject("验证码");
        //设置邮件正文  第二个参数是邮件发送的类型
        message.setContent("2569658","text/html;charset=UTF-8");
        //发送一封邮件
            Transport transport = session.getTransport();
            transport.connect("[email protected]","xxxxxda");
            Transport.send(message);
            System.out.println("执行了");
    } catch (MessagingException e) {
        e.printStackTrace();
    }finally {

        }

    }

    public static void main(String[] args) {
        System.out.println("执行了1");
        SendMail SendMail = new SendMail();
    }
}

大多数代码看注释就可以看懂了

但是要注意我们发送的账户要去邮箱开启
POP3/SMTP服务
步骤我们以qq为例
看图就行了
这里写图片描述

然后

这里写图片描述

开启服务
这里写图片描述

发送短信

这里写图片描述

然后会给你一个授权码 这就相当于你的登录密码

也就是上述xxxxxdfda 地方换成响应的授权码 这样就可以不用担心密码泄露的问题了

关于即使填了授权码也报535错误的原因可能是网络问题,我遇见过,莫名其妙就好了。。。。。我也不知道为啥

上面的问题今天又遇见了,最终知道了原因 就是短时间内你发送了大量的邮件 导致的 所以过5分钟左右你在发送就好了 这个应该是qq邮箱的问题

猜你喜欢

转载自blog.csdn.net/qq_35794278/article/details/80793641