Java 邮箱发邮件

一、流程
1.首先,需要创建一个邮件会话对象,用于与邮件服务器进行通信。可以使用JavaMail API中的Session类来实现。

2.接下来,需要创建一个MimeMessage对象,用于表示邮件内容。可以设置发件人、收件人、主题、正文等信息。

3.然后,需要设置邮件服务器的地址和端口号,以及发件人的邮箱账号和密码。可以使用JavaMail API中的Transport类来实现。

4.接着,将MimeMessage对象传递给Transport类的send()方法,发送邮件。

5.最后,关闭邮件会话对象,释放资源。

这就是发送邮件的基本流程。需要注意的是,发送邮件时需要确保邮件服务器地址、端口号、邮箱账号、密码等信息的正确性,以及网络连接的稳定性。
二、开启邮箱权限
邮箱的使用权限

网易邮箱–>设置–>QQ邮箱–>邮箱设置–>账户–>POP3/SMTP/IMAP

开启POP3/SMTP服务,然后获取16位授权码
三、代码编写
创建连接类

package com.example.demo;

import java.util.Properties;

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

public final class JavaMailUntil {
    private JavaMailUntil() {}

    public static Session createSession() {

        //	账号信息
        String username = "@163.com";//	邮箱发送账号
        String password = "";//	邮箱授权码

        //	创建一个配置文件,并保存
        Properties props = new Properties();

        //	SMTP服务器连接信息
        //  126——smtp.126.com
        //  163——smtp.163.com
        //  qqsmtp.qq.com"
        props.put("mail.smtp.host", "smtp.163.com");//	SMTP主机名

        //  126——25
        //  163——645
        props.put("mail.smtp.port", "25");//	主机端口号
        props.put("mail.smtp.auth", "true");//	是否需要用户认证
        props.put("mail.smtp.starttls.enale", "true");//	启用TlS加密

        Session session = Session.getInstance(props,new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
               
                return new PasswordAuthentication(username,password);
            }
        });

        //  控制台打印调试信息
        session.setDebug(true);
        return session;

    }
}

基础文本发送

 try {
                    //1.创建Session对象
                    Session session = JavaMailUntil.createSession();
                    //2.创建MimeMessage邮件对象
                    MimeMessage message = new MimeMessage(session);
                    message.setFrom(new InternetAddress(""));   //发件人              
                    message.setSubject("邮件标题");  //邮件标题
                    message.setText("文本信息");
                    message.setRecipient(RecipientType.TO, new InternetAddress(""));   //收件人
                    //多人抄送使用new InternetAddress[] {}

                    message.setRecipients(RecipientType.CC, new InternetAddress[] {new  InternetAddress("抄送人邮箱"),new InternetAddress("抄送人邮箱")});
                    Transport.send(message);
             

带附件邮件

try {
    //	创建会话
    Session session = JavaMailUntil.createSession();
    //	创建邮件
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(""));
    message.setRecipient(RecipientType.TO, new InternetAddress(""));
    //message.setRecipients(RecipientType.CC, new InternetAddress[] {new  InternetAddress("抄送人邮箱"),new InternetAddress("抄送人邮箱")});
    message.setSubject("主题");

    //	邮件主体
    BodyPart textPart = new MimeBodyPart();
    textPart.setContent("文件内容","text/html;charset=utf-8");

    //	邮件附件

    String fileName="你好.jpg";
    String encodedFileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
    //保证中文不乱码
    BodyPart filePart = new MimeBodyPart();
    filePart.setFileName(encodedFileName);

    //	提交附件文件

    filePart.setDataHandler(new DataHandler(new ByteArrayDataSource(Files.readAllBytes(Paths.get("文件路径地址")));

    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(textPart);
    multipart.addBodyPart(filePart);

    //	将邮件装入信封
    message.setContent(multipart);

    Transport.send(message);
} catch (AddressException e) {
    e.printStackTrace();
} catch (MessagingException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
    }
    }
  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值