原生方式
package test;
import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class TestSendEmail {
//设计一个方法 创建一个邮件对象
//参数---session
//返回值---一个邮件对象(映射) MimeMessage
private static Message createMessage(Session session) throws MessagingException {
//自己创建一个邮件对象
Message message=new MimeMessage(session);
//设置邮件的基本信息
//设置发送人
message.setFrom(new InternetAddress("1713599635@qq.com"));
//设置接收人 收件类型:收件人TO 抄送人CC 密送/暗送BCC
message.setRecipient(Message.RecipientType.TO,new InternetAddress("1713599635@qq.com"));
//设置邮件发送的时间 message.setSendDate(Date对象);
//设置发送主题
message.setSubject("这是邮件的主题");
//设置发送邮件正文
message.setText("我是邮件的正文");
//以上所有的设置需要保存才能生效
message.saveChanges();
return message;
}
public static void main(String[] args) throws MessagingException {
//1.下载一个mail.jar
//2.导包
//3.创建一个用于存放配置信息的对象,Properties类
Properties properties=new Properties();
//4.设置发送邮件需要的一些信息
//设置发送邮件的协议 smtp
properties.put("mail.transport.protocol","smtp");//必须
//设置发送邮件的主机名
properties.put("mail.smtp.host","smtp.qq.com");//必须
/*
设置发送邮件的端口,默认25
properties.put("mail.smtp.port","xxx");
设置发送邮件时是否需要进行身份认证
properties.put("mail.smtp.auth","true");
设置是否使用ssl安全连接 默认使用
properties.put("mail.smtp.ssl.enable","true");
*/
//5.创建一个session对象(可以理解为是一个Socket,Java和邮箱之间建立一个连接)
Session session=Session.getDefaultInstance(properties);
//6.通过session对象获取一个Transport对象(可以理解为是一个输出流)
Transport transport=session.getTransport();
//7.通过邮箱发送邮件,必须得到邮件服务器的认可(使用哪个邮箱发送,授权码)
transport.connect("1713599635@qq.com","qoqjjdmlyagyecfc");
//8.发送一封邮件(创建一个邮件的映射关系) File对象 Class对象 映射
//创建邮件对象比较复杂,需要好多信息,单独写一个方法
Message message=createMessage(session);
//9.发送邮件(需要一个message对象,知道message对象中的那些接收人)
transport.sendMessage(message,message.getAllRecipients());
//10.关闭通道
transport.close();
System.out.println("发送完毕");
}
}
基于Spring的Email
ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xsi:schemaLocation=" http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans">
<bean id="sender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.qq.com"></property>
<property name="username" value="1713599635@qq.com"></property>
<property name="password" value="qoqjjdmlyagyecfc"></property>
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
</props>
</property>
</bean>
</beans>
SpringSendEmail
package test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
public class SpringSendEmail {
public static void main(String[] args) throws MessagingException {
BeanFactory factory = new ClassPathXmlApplicationContext("ApplicationContext.xml");
JavaMailSender sender = (JavaMailSender) factory.getBean("sender");
//1.利用sender创建一个邮件对象
MimeMessage message= sender.createMimeMessage();
//2.发送邮件 找小弟帮忙
MimeMessageHelper helper=new MimeMessageHelper(message);
//3.需要告知helper 谁发 发给谁 发什么
helper.setFrom("1713599635@qq.com");
helper.setTo("1713599635@qq.com");
helper.setSubject("邮件主题");
helper.setText("正文内容");
//4.直接发送
sender.send(message);
System.out.println("发送成功");
}
}