java 发送邮件

pom.xml, 不要有其他的邮件相关包, 以免冲突。

<dependency >
    <groupId >com.sun.mail </groupId >
    <artifactId >javax.mail </artifactId >
    <version >1.5.4 </version >
</dependency >

代码: 不要直接拷贝运行, 看看里面的注释!!!!!

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.util.*;

public class EmailService {
    
    public static void main(String[] args){
        EmailService service = new EmailService();
        service.sendEmail();
    }
    public void sendEmail() {


        String MAIL_SERVER_HOST = "smtp.qq.com"; // !!!邮件服务器  qq服务器是 "smtp.qq.com", 其他邮件服务器看具体情况,可以去自己邮箱设置里面去查找,如果用公司内网服务器,那可能是具体的一个内网ip
        String USER = "user";    // 发件人账号  !!! 一般用户名跟发件人地址是一样的。也可能不一样,比如说公司内部的公用邮箱账号就可能指定一个不同的账户名。
        String PASSWORD = "pswd";  //发件人密码  !!! 如果是qq邮箱, 此密码是授权码,授权码可以去qq邮箱获取,网上有教程。
        String MAIL_FROM = "yyyyy@qq.com";  // 发件人地址 
        String MAIL_TO = "xxxxx@qq.com";  // 收件人地址, 发送多人的话用逗号隔开
        String[] files = new String[]{"xxxx","xxx"};  // 发送的附件, 文件路径名,可以多个。

        String SUBJECT = "subject";      // 邮件主题
        String CONTENT = "content";      // 邮件内容

        Properties prop = new Properties();
        prop.setProperty("mail.debug", "true");
        prop.setProperty("mail.host", MAIL_SERVER_HOST);
        prop.setProperty("mail.transport.protocol", "smtp");
        prop.setProperty("mail.smtp.auth", "true");
        prop.setProperty("mail.smtp.starttls.enable", "true");

        try {
            Session session = Session.getInstance(prop);
            Transport ts = session.getTransport();
            ts.connect(MAIL_SERVER_HOST, USER, PASSWORD);
            MimeMessage message = new MimeMessage(session);

            MimeBodyPart text = new MimeBodyPart();
            text.setContent(CONTENT, "text/html;charset=UTF-8");

            MimeMultipart mm = new MimeMultipart();
            mm.setSubType("related");
            mm.addBodyPart(text);

            for(String filename : files) {
                MimeBodyPart attachPart = new MimeBodyPart();
                attachPart.attachFile(filename);
                mm.addBodyPart(attachPart);
            }
            message.setContent(mm);
            message.saveChanges();
            message.setSubject(SUBJECT);

            message.setFrom(new InternetAddress(MAIL_FROM));
            message.setRecipients(Message.RecipientType.TO, MAIL_TO);  // 发送多人
            // message.setRecipient(Message.RecipientType.TO, new InternetAddress(MAIL_TO)); // 发送单人
//        message.setRecipient(Message.RecipientType.CC, new InternetAddress(MAIL_CC)); // 邮件的抄送人
//        message.setRecipient(Message.RecipientType.BCC, new InternetAddress(MAIL_BCC)); // 邮件的密送人
//        message.setText("Content");

            ts.sendMessage(message, message.getAllRecipients());
            ts.close();
            System.out.println("邮件发送成功");
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}

参考文章: https://www.jianshu.com/p/0d1fc72d3414

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值