Java教程

Java实现发送邮件

本文主要是介绍Java实现发送邮件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.前置条件

发送邮件的前提是需要java的一个javax.mail的一个jar包。它支持一些简单的邮件传输协议,例如:SMTP,POP3等。我使用的是javax.mail-1.16.2.jar。

需要下载的话,可以到Javaee官方的github下载:https://javaee.github.io/javamail/#Download_JavaMail_Release
image
点击即可下载

若使用maven项目,则可以使用

<!-- 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>

2.Java实现纯文本的邮件发送

先使用一个utils类,生成6位的随机数

package Utils;

import java.util.Random;

/**
 * @author ryk
 * @version 1.0.0
 * @ClassName MessageUtils.java
 * @createTime 2021年06月09日 23:50:00
 */
public class MessageUtils {
    //返回6位随机数
    public static String message(){
        Random random = new Random();
        String str = "";
        for (int i = 0; i < 6; i++) {
            str+=random.nextInt(10);
        }
        return str;
    }

    public static void main(String[] args) {
        MessageUtils messageUtils = new MessageUtils();
        System.out.println(messageUtils.message());
    }
}

下面在将这个验证码发送到指定的邮箱

package Mail;

import Utils.MessageUtils;

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

/**
 * @author ryk
 * @version 1.0.0
 * @ClassName sendMail.java
 * @Description TODO
 * @createTime 2021年06月09日 23:54:00
 */
public class sendMail {

    /**
     * 发送邮件
     * @param emailPassword email的授权码
     * @param receiver 接收人
     * @param nickname 向接收人显示的昵称
     * @param sender 发送人
     * @param messageNumber 验证码
     * @throws Exception
     */
    public static void sendEmails(String emailPassword, String sender, String receiver , String messageNumber, String nickname) throws Exception{

        Properties props = new Properties();

        props.setProperty("mail.smtp.auth","true");
        //传输方式
        props.setProperty("mail.transport.protocol","smtp");
        //使用的服务器网易的服务器,也可以使用QQ的
        props.setProperty("mail.smtp.host", "smtp.163.com");

        Session session = Session.getInstance(props);

        session.setDebug(true);

        Transport transport = session.getTransport();

        transport.connect(sender, emailPassword);

        Message message = createMessage(session, receiver, nickname, sender, messageNumber);

        transport.sendMessage(message, message.getAllRecipients());

        transport.close();

    }

    /**
     * 创建一封邮件
     * @param session
     * @param receiver 接收人
     * @param nickname 向接收人显示的昵称
     * @param sender 发送人
     * @param messageNumber 验证码
     * @return 返回一个邮件
     * @throws Exception
     */
    public static MimeMessage createMessage (Session session, String receiver, String nickname, String sender, String messageNumber) throws Exception{

        MimeMessage message=new MimeMessage(session);

        message.setFrom(new InternetAddress(nickname + "<" + sender + ">"));

        message.setRecipient(RecipientType.TO, new InternetAddress(receiver));

        message.setSubject("邮件主题");

        message.setContent("验证码为:" + messageNumber, "text/html;charset=UTF-8");

        message.setSentDate(new Date());

        return message;
    }

    public static void main(String[] args) {
        try {
            //发件人
            String sender = "xxx@163.com";
            //收件人
            String receiver = "xxx@qq.com";
            //验证码
            String messageNumber = MessageUtils.message();
            //发件人昵称
            String nickname = "xxx";
            sendEmails("请填入自己的授权码", sender, receiver, messageNumber, nickname);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

image
然后运行main即可发送邮件。
image

大功告成

这篇关于Java实现发送邮件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!