SpringMail(使用qq邮箱)

导入依赖

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.xxx</groupId>
  <artifactId>SpringMail</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>SpringMail</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail -->
    <dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>javax.mail</artifactId>
      <version>1.6.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>javax.mail-api</artifactId>
      <version>1.6.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.3.19</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>5.3.18</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.18</version>
    </dependency>

  </dependencies>

  <build>

  </build>
</project>

普通文本:

package com.xxx.mail;

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

/**
 * @Author 陈平安
 * @Date 2022/6/23 9:18
 * @PackageName:com.xxx.mail
 * @ClassName: MailTest01
 * @Description: TODO
 * @Version 1.0
 */

/**
 * 生成普通文本
 */
public class MailTest01 {
    public static void main(String[] args) throws MessagingException {
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.host", "smtp.qq.com");//定义服务器配置
        properties.setProperty("mail.smtp.port", "587");//端口号不同
        properties.setProperty("mail.smtp.auth", "true");

        Session session = Session.getInstance(properties);
        session.setDebug(true);
        Transport transport = session.getTransport();
        transport.connect("3550462027@qq.com", "bnhytgzktdzechgh");
        Message message = createMail(session);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();

    }

    private static Message createMail(Session session) throws MessagingException {
        MimeMessage mimeMessage = new MimeMessage(session);

        mimeMessage.setFrom("3550462027@qq.com");

        mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("3550462027@qq.com"));

        mimeMessage.setSubject("测试内容");
        mimeMessage.setSentDate(new Date());
        mimeMessage.setText("这是一个测试内容");

        return  mimeMessage;
    }
}

html类文章:

package com.xxx.mail;

import javax.mail.Message;
import javax.mail.MessagingException;
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.util.Date;
import java.util.Properties;

/**
 * @Author 陈平安
 * @Date 2022/6/23 9:18
 * @PackageName:com.xxx.mail
 * @ClassName: MailTest01
 * @Description: TODO
 * @Version 1.0
 */

/**
 * 生成普通文本
 */
public class MailTest02 {
    public static void main(String[] args) throws MessagingException {
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.host", "smtp.qq.com");//定义服务器配置
        properties.setProperty("mail.smtp.port", "587");//端口号不同
        properties.setProperty("mail.smtp.auth", "true");

        Session session = Session.getInstance(properties);
        session.setDebug(true);
        Transport transport = session.getTransport();
        transport.connect("3550462027@qq.com", "bnhytgzktdzechgh");
        Message message = createHTMLMail(session);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();

    }

    private static Message createHTMLMail(Session session) throws MessagingException {
        MimeMessage message = new MimeMessage(session);

        message.setFrom("3550462027@qq.com");;
        message.setRecipient(Message.RecipientType.TO,new InternetAddress("3550462027@qq.com"));
        message.setSentDate(new Date());
        message.setSubject("测试主题");

        //多媒体对象
        MimeMultipart mimeMultipart = new MimeMultipart();
        MimeBodyPart mimeBodyPart = new MimeBodyPart();
        StringBuffer buffer = new StringBuffer();
        buffer.append("<html><body><a href=\"https://www.baidu.com\">百度</a></body></html>");
        mimeBodyPart.setContent(buffer.toString(),"text/html;charset=UTF-8");
        mimeMultipart.addBodyPart(mimeBodyPart);
        message.setContent(mimeMultipart);

        return message;

    }

    private static Message createMail(Session session) throws MessagingException {
        MimeMessage mimeMessage = new MimeMessage(session);

        mimeMessage.setFrom("3550462027@qq.com");

        mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("3550462027@qq.com"));

        mimeMessage.setSubject("测试内容");
        mimeMessage.setSentDate(new Date());
        mimeMessage.setText("这是一个测试内容");

        return  mimeMessage;
    }
}

附件

package com.xxx.mail;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Date;
import java.util.Properties;

/**
 * @Author 陈平安
 * @Date 2022/6/23 9:18
 * @PackageName:com.xxx.mail
 * @ClassName: MailTest01
 * @Description: TODO
 * @Version 1.0
 */

/**
 * 生成普通文本
 */
public class MailTest03 {
    public static void main(String[] args) throws MessagingException {
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.host", "smtp.qq.com");//定义服务器配置
        properties.setProperty("mail.smtp.port", "587");//端口号不同
        properties.setProperty("mail.smtp.auth", "true");

        Session session = Session.getInstance(properties);
        session.setDebug(true);
        Transport transport = session.getTransport();
        transport.connect("3550462027@qq.com", "bnhytgzktdzechgh");
        Message message = createAttackedHTMLMail(session);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();

    }

    private static Message createAttackedHTMLMail(Session session) throws MessagingException {
        MimeMessage message = new MimeMessage(session);

        message.setFrom("3550462027@qq.com");
        ;
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("3550462027@qq.com"));
        message.setSentDate(new Date());
        message.setSubject("测试主题01");

        MimeBodyPart mimeBodyPart = new MimeBodyPart();
        mimeBodyPart.setContent("<h2>这是一个附件文章</h2>", "text/html;charset=UTF-8");

        MimeBodyPart mimeBodyPart1 = new MimeBodyPart();
        DataHandler dataHandler = new DataHandler(new FileDataSource("C:\\Users\\Lenovo\\Desktop\\新建文本文档.txt"));
        mimeBodyPart1.setDataHandler(dataHandler);
        mimeBodyPart1.setFileName(dataHandler.getName());

        MimeMultipart mimeMultipart = new MimeMultipart();

        mimeMultipart.addBodyPart(mimeBodyPart);
        mimeMultipart.addBodyPart(mimeBodyPart1);

        mimeMultipart.setSubType("mixed");
        message.setContent(mimeMultipart);
        return message;

    }

    private static Message createHTMLMail(Session session) throws MessagingException {
        MimeMessage message = new MimeMessage(session);

        message.setFrom("3550462027@qq.com");
        ;
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("3550462027@qq.com"));
        message.setSentDate(new Date());
        message.setSubject("测试主题");

        //多媒体对象
        MimeMultipart mimeMultipart = new MimeMultipart();
        MimeBodyPart mimeBodyPart = new MimeBodyPart();
        StringBuffer buffer = new StringBuffer();
        buffer.append("<html><body><a href=\"https://www.baidu.com\">百度</a></body></html>");
        mimeBodyPart.setContent(buffer.toString(), "text/html;charset=UTF-8");
        mimeMultipart.addBodyPart(mimeBodyPart);
        message.setContent(mimeMultipart);

        return message;

    }

    private static Message createMail(Session session) throws MessagingException {
        MimeMessage mimeMessage = new MimeMessage(session);

        mimeMessage.setFrom("3550462027@qq.com");

        mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("3550462027@qq.com"));

        mimeMessage.setSubject("测试内容");
        mimeMessage.setSentDate(new Date());
        mimeMessage.setText("这是一个测试内容");

        return mimeMessage;
    }
}

以下是升级版本:

package com.xxx.mail;

import java.util.List;

/**
 * @Author 陈平安
 * @Date 2022/6/23 10:04
 * @PackageName:com.xxx.mail
 * @ClassName: Test
 * @Description: TODO
 * @Version 1.0
 */
public class Test {
    private String serverHost;
    private String serverPort;
    private String formAddress;
    private List<String> toAddress;
    private String userName;
    private String userpwd;
    private String subject;
    private String content;
    private Boolean flag = true;

    private List<String> attachFilename;

    public String getServerHost() {
        return serverHost;
    }

    public void setServerHost(String serverHost) {
        this.serverHost = serverHost;
    }

    public String getServerPort() {
        return serverPort;
    }

    public void setServerPort(String serverPort) {
        this.serverPort = serverPort;
    }

    public String getFormAddress() {
        return formAddress;
    }

    public void setFormAddress(String formAddress) {
        this.formAddress = formAddress;
    }

    public List<String> getToAddress() {
        return toAddress;
    }

    public void setToAddress(List<String> toAddress) {
        this.toAddress = toAddress;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserpwd() {
        return userpwd;
    }

    public void setUserpwd(String userpwd) {
        this.userpwd = userpwd;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Boolean getFlag() {
        return flag;
    }

    public void setFlag(Boolean flag) {
        this.flag = flag;
    }

    public List<String> getAttachFilename() {
        return attachFilename;
    }

    public void setAttachFilename(List<String> attachFilename) {
        this.attachFilename = attachFilename;
    }
}
package com.xxx.mail;

import java.util.ArrayList;

/**
 * @Author 陈平安
 * @Date 2022/6/23 10:58
 * @PackageName:com.xxx.mail
 * @ClassName: Test01
 * @Description: TODO
 * @Version 1.0
 */
public class Test0 {
    public static void main(String[] args) {
        test01();
    }

    public static void test01() {

        Test test = new Test();

        test.setServerHost("smtp.qq.com");
        test.setServerPort("587");
        test.setUserName("3550462027@qq.com");
        test.setUserpwd("bnhytgzktdzechgh");
        test.setSubject("邮件封装测试");
        test.setFormAddress("3550462027@qq.com");
        test.setContent("<h2>这是一个附件文章</h2>");
        ArrayList<String> list = new ArrayList<>();
        list.add("3550462027@qq.com");

        test.setToAddress(list);


        ArrayList<String> list1 = new ArrayList<>();
        list1.add("C:\\Users\\Lenovo\\Desktop\\新建文本文档.txt");
        test.setAttachFilename(list1);

        MailSender sender = new MailSender();
        sender.sendMail(test);
    }
}
package com.xxx.mail;

import java.util.ArrayList;

/**
 * @Author 陈平安
 * @Date 2022/6/23 10:58
 * @PackageName:com.xxx.mail
 * @ClassName: Test01
 * @Description: TODO
 * @Version 1.0
 */
public class Test01 {
    public static void main(String[] args) {
        test01();
    }

    public static void test01() {

        Test test = new Test();

        test.setServerHost("smtp.qq.com");
        test.setServerPort("587");
        test.setUserName("3550462027@qq.com");
        test.setUserpwd("bnhytgzktdzechgh");
        test.setSubject("邮件封装测试");
        test.setFormAddress("3550462027@qq.com");
        test.setContent("<h2>这是一个附件文章</h2>");
        ArrayList<String> list = new ArrayList<>();
        list.add("3550462027@qq.com");
        test.setToAddress(list);
        MailSender sender = new MailSender();
        sender.sendMail(test);
    }
}
package com.xxx.mail;

import java.util.ArrayList;

/**
 * @Author 陈平安
 * @Date 2022/6/23 10:58
 * @PackageName:com.xxx.mail
 * @ClassName: Test01
 * @Description: TODO
 * @Version 1.0
 */
public class Test02 {
    public static void main(String[] args) {
        test01();
    }

    public static void test01() {

        Test test = new Test();

        test.setServerHost("smtp.qq.com");
        test.setServerPort("587");
        test.setUserName("3550462027@qq.com");
        test.setUserpwd("bnhytgzktdzechgh");
        test.setSubject("邮件封装测试");
        test.setFormAddress("3550462027@qq.com");
        test.setContent("<h2>这是一个附件文章</h2>");
        ArrayList<String> list = new ArrayList<>();
        list.add("3550462027@qq.com");

        test.setToAddress(list);


        ArrayList<String> list1 = new ArrayList<>();
        list1.add("C:\\Users\\Lenovo\\Desktop\\新建文本文档.txt");
        test.setAttachFilename(list1);

        MailSender sender = new MailSender();
        sender.sendMail(test);
    }
}
package com.xxx.mail;

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

/**
 * @Author 陈平安
 * @Date 2022/6/23 10:07
 * @PackageName:com.xxx.mail
 * @ClassName: Identify
 * @Description: TODO
 * @Version 1.0
 */
public class Identify extends Authenticator {
    private String userName;
    private String userPwd;

    public Identify(String userName, String userPwd) {
        this.userName = userName;
        this.userPwd = userPwd;
    }

    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(userName,userPwd);
    }
}
package com.xxx.mail;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.Properties;

/**
 * @Author 陈平安
 * @Date 2022/6/23 10:31
 * @PackageName:com.xxx.mail
 * @ClassName: MailSender
 * @Description: TODO
 * @Version 1.0
 */
public class MailSender {
    public void sendMail(Test test) {

        try {
            Properties properties = new Properties();
            properties.setProperty("mail.smtp.host", test.getServerHost());//定义服务器配置
            properties.setProperty("mail.smtp.port", test.getServerPort());//端口号不同
            properties.setProperty("mail.smtp.auth", test.getFlag().toString());

            Identify identify = new Identify(test.getUserName(), test.getUserpwd());

            Session session = Session.getDefaultInstance(properties,identify);

            session.setDebug(true);

            Message message = new MimeMessage(session);

            Address address = new InternetAddress(test.getFormAddress());

            message.setFrom(address);

            message.setSubject(test.getSubject());

            message.setSentDate(new Date());

            if (null != test.getFormAddress() && test.getToAddress().size() > 0) {
                Address[] addresses = new Address[test.getToAddress().size()];

                for (int i = 0; i < test.getToAddress().size(); i++) {
                    Address address1 = new InternetAddress(test.getToAddress().get(i));

                    addresses[i] = address;

                    message.setRecipients(Message.RecipientType.TO, addresses);
                }
            }

            MimeMultipart mimeMultipart = new MimeMultipart();
            MimeBodyPart mimeBodyPart = new MimeBodyPart();
            mimeBodyPart.setContent(test.getContent(), "text/html;charset=UTF-8");

            mimeMultipart.addBodyPart(mimeBodyPart);

            List<String> list = test.getAttachFilename();
            if (list != null && list.size() > 0) {
                for (int i = 0; i < list.size(); i++) {
                    File file = new File(list.get(i));
                    if (file.exists()) {
                        MimeBodyPart attachBody = new MimeBodyPart();
                        DataHandler dataHandler = new DataHandler(new FileDataSource(file));
                        attachBody.setDataHandler(dataHandler);

                        attachBody.setFileName(MimeUtility.encodeText(dataHandler.getName()));

                        mimeMultipart.addBodyPart(attachBody);
                    }
                }
            }
            message.setContent(mimeMultipart);
            Transport.send(message);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
package com.xxx;

import com.xxx.Service.ImpleMethods;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @Author 陈平安
 * @Date 2022/6/24 9:32
 * @PackageName:com.xxx
 * @ClassName: Test01
 * @Description: TODO
 * @Version 1.0
 */
public class Test01 {
    public static void main(String[] args) {
        BeanFactory beanFactory = new ClassPathXmlApplicationContext("beans.xml");
        ImpleMethods impleMethods = (ImpleMethods) beanFactory.getBean("impleMethods");
        impleMethods.MailMethods();
    }
}
package com.xxx;

import com.xxx.Service.ImpleMethods;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.MailSender;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

/**
 * @Author 陈平安
 * @Date 2022/6/24 9:32
 * @PackageName:com.xxx
 * @ClassName: Test01
 * @Description: TODO
 * @Version 1.0
 */
public class Test02 {
    public static void main(String[] args) throws MessagingException {
        BeanFactory beanFactory = new ClassPathXmlApplicationContext("beans.xml");
//        ImpleMethods impleMethods = (ImpleMethods) beanFactory.getBean("impleMethods");
//        impleMethods.MailMethods();
       // MailSender mailSender =
        JavaMailSender mailSender = (JavaMailSender) beanFactory.getBean("mailSender");
        MimeMessage message= mailSender.createMimeMessage();

        message.setSubject("hello--");
        MimeMessageHelper helper = new MimeMessageHelper(message,true,"UTF-8");
        helper.setTo("3550462027@qq.com");
        helper.setFrom("3550462027@qq.com");
        helper.setText("tefger");
        File file = new File("C:\\Users\\Lenovo\\Desktop\\新建文本文档.txt");
        helper.addAttachment(file.getName(),file);
        mailSender.send(message);

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值