通过Java发送QQ邮箱。

获取QQ邮箱的支持

打开邮箱 ——设置
在这里插入图片描述

点击账户
在这里插入图片描述

在这里插入图片描述
是一个16位的字符串。务必保存好。

在IDEA中导入依赖。

# 导入依赖

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

配置工具类

package com.chang.test;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

/*
用来验证SMTP服务器身份。程序继承了Authenticator类,它主要用来实现登录邮件服务器时的认证。
它包含两个属性:username和password,分别用来存储认证时所需的用户名和密码信息。
程序重写了Authenticator类的getPasswordAuthentication()方法,该方法返回PasswordAuthentication对象,
此对象包含通过STMP服务器身份验证所需的用户名和密码,供认证时session调用。
Auth类,它继承了Authenticator类

 */
public class Auth extends Authenticator {

    private String username = "";
    private String password = "";

    public Auth(String username, String password) {
        this.username = username;
        this.password = password;
    }
    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }
}

package com.chang.test;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/*
代码说明:该程序为一个邮件发送通用类的程序,SendMail构造方法实现对发送邮件身份的认证,获得Session对象。
该方法中SMTPHost、Port、MailUsername、MailPassword分别表示所使用的SMTP服务器、服务器的smtp端口、用户名和密码。
sendingMimeMail()方法为发送邮件的方法,在该方法需要传入的参数中,MailFrom为发件人电子信箱,MailTo为收件人电子信箱,
MailCopyTo为抄送人电子信箱,MailBCopyTo为暗送人电子信箱,
MailSubject为发送邮件主题,MailBody为发送邮件正文。
sendingMimeMail()返回boolean类型,表示是否发送成功。
发送邮件时先调用构造方法SendMail()创建邮件发送对象,然后调用sendingMimeMail()方法发送。

 */
public class SendMail {

    private Properties props; //系统属性
    private Session mailSession; //邮件会话对象
    private MimeMessage mimeMsg; //MIME邮件对象

    public SendMail(String SMTPHost, String Port, String MailUsername, String MailPassword) {
        Auth au = new Auth(MailUsername, MailPassword);
        //设置系统属性
        props=java.lang.System.getProperties(); //获得系统属性对象
        props.put("mail.smtp.host", SMTPHost); //设置SMTP主机
        props.put("mail.smtp.port", Port); //设置服务端口号
        props.put("mail.smtp.auth", "true"); //同时通过验证
        //获得邮件会话对象
        mailSession = Session.getInstance(props, au);
    }

    public boolean sendingMimeMail(String MailFrom, String MailTo,
                                   String MailCopyTo, String MailBCopyTo, String MailSubject,
                                   String MailBody) {
        try {
            //创建MIME邮件对象
            mimeMsg=new MimeMessage(mailSession);
            //设置发信人
            mimeMsg.setFrom(new InternetAddress(MailFrom));
            //设置收信人
            if(MailTo!=null){
                mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(MailTo));
            }
            //设置抄送人
            if(MailCopyTo!=null){
                mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,InternetAddress.parse(MailCopyTo));
            }
            //设置暗送人
            if(MailBCopyTo!=null){
                mimeMsg.setRecipients(javax.mail.Message.RecipientType.BCC,InternetAddress.parse(MailBCopyTo));
            }
            //设置邮件主题
            mimeMsg.setSubject(MailSubject,"utf-8");
            //设置邮件内容,将邮件body部分转化为HTML格式
            mimeMsg.setContent(MailBody,"text/html;charset=utf-8");
            //发送邮件
            Transport.send(mimeMsg);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
}
package com.chang.test;

public class SendDemo {

    /**
     * 若频繁发送,腾讯服务器会将邮件自动识别为垃圾邮件并且屏蔽
     * @param args
     */
    public static void main(String[] args) {
        String SMTPHost="smtp.qq.com";
        String Port="587";
        String MailUsername=""; //直接用我的邮件进行发送测试
        String MailPassword=""; //密码请勿修改 前面的16位字符串
        SendMail sendMail=new SendMail(SMTPHost,Port,MailUsername,MailPassword);

        String MailFrom=""; //发件人
        String MailTo=""; //收件人
        String MailCopyTo=null; //抄送人
        String MailBCopyTo=null; //暗送人
        String MailSubject="JavaSE发送邮件测试"; //邮件主题(可以手动更改)
        String MailBody="hahahaha"; //邮件内容

        //发送邮件
        boolean isSend=sendMail.sendingMimeMail(MailFrom, MailTo, MailCopyTo, MailBCopyTo, MailSubject, MailBody);
        if(isSend){
            System.out.println("邮件发送成功");
        }else{
            System.out.println("邮件发送失败");
        }
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值