胡豆秆

个人博客

欢迎来到我的个人博客~


Java程序发送邮件


​ 最近在写用户注册功能的时候,需要使用邮箱来绑定用户。这就需要发送验证码给用户邮箱来验证,所以想学习一下Java程序发送邮件。

​ 如果想让邮箱支持客户端发送邮件,则需要开启自己邮箱的POP3/SMTP服务和授权码(该授权码在程序中需要使用)。

​ 此处以我的网易邮箱为例:

​ 使用Java程序发送邮件,需要使用到两个jar包:mail.jar、activation.jar。需要的jar包可以去mvnrepository.com/获取,我创建的是maven项目,所以直接在pom文件中加依赖。

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

程序代码如下:

public class MailDemo {

	public static void main(String[] args) throws Exception {
		
		//创建配置文件
		Properties properties = new Properties();
		//设置邮件服务器
		properties.setProperty("mail.host", "smtp.163.com");
		//设置邮件发送协议
		properties.setProperty("mail.transport.protocol", "smtp");
		//是否需要验证用户名和密码
		properties.setProperty("mail.smtp.auth", "true");
		
		//设置SSL加密
		MailSSLSocketFactory mailSSLSocketFactory = new MailSSLSocketFactory();
		mailSSLSocketFactory.setTrustAllHosts(true);
		properties.put("mail.smtp.ssl.enable", "true");
		properties.put("mail.smtp.ssl.socketFactory", mailSSLSocketFactory);
		
		//使用JavaMail发送邮件的5个步骤
		//1.创建 Session 对象
		Session session = Session.getDefaultInstance(properties,new Authenticator() {
			@Override
			public PasswordAuthentication getPasswordAuthentication() {
				// 这里的邮箱授权码指的是自己邮箱的邮箱授权码 需要到自己的邮箱开启
				return new PasswordAuthentication("15775960389@163.com", "邮箱授权码");
			}
		});
		//开启Session的debug模式(可以查看到程序发送Email的运行状态)
		session.setDebug(true);
		
		//2.获取transport对象
		Transport transport = session.getTransport();
		
		//3.使用邮箱的用户名和授权码连上邮件服务器
		transport.connect("smtp.163.com", "15775960389@163.com", "邮箱授权码");
		
		//4.创建邮件
		MimeMessage message = new MimeMessage(session);
		//设置发件人
		message.setFrom(new InternetAddress("15775960389@163.com"));
		//设置收件人
		message.setRecipient(Message.RecipientType.TO, new InternetAddress("807566806@qq.com"));
		//邮件标题
		message.setSubject("这是邮件的标题");
		//邮件内容
		message.setContent("这是邮件内容", "text/html;charset=UTF-8");
		
		//5.发送邮件
		transport.sendMessage(message, message.getAllRecipients());
		//释放资源
		transport.close();
	}

}

​ 直接运行程序,即可发送邮件。

​ 不同的邮箱地址有不同的邮箱服务器,可以自己去查询自己所需要的。程序中的各种属性也可根据自己的需求去更改。

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦