当前位置: 代码迷 >> 综合 >> Java Mail邮箱相关
  详细解决方案

Java Mail邮箱相关

热度:97   发布时间:2023-10-21 15:37:34.0

Java Mail

使用Java Mail需要使用javax.mail的jar包

<dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.4</version>
</dependency>

主要api为:

Properties props=new Properties();
props.put("mail.smtp.host","smtp.163.com");//邮件服务器
props.put("mail.smtp.auth","true");
Session session=Session.getInstance(props);//会话session
//构造信息体 
MimeMessage message =new MimeMessage(session);//发件地址 
Address address = new InternetAddress("test@163.com"); 
message.setFrom(address);
//收件地址 
Address toAddress = new InternetAddress("test@qq.com"); 
message.setRecipient(MimeMessage.RecipientType.TO, toAddress);
//主题 
message.setSubject("Hello world");
//正文 
message.setText("Hello world");
message.saveChanges();
Transport transport = session.getTransport("smtp"); 
transport.connect("smtp.163.com", "test@163.com", "password"); //连接 
transport.sendMessage(message, message.getAllRecipients());
transport.close();

抽取为工具类方便使用:

/*** 电子邮件工具类* @author chzhang**/
public class MailUtil {/*** 发送电子邮件* @param addr 收件人地址* @param subject 主题* @param text 内容* @throws MessagingException*/public static void sendMail(String addr,String subject,String text) throws MessagingException{Properties props=new Properties();props.put("mail.smtp.host","smtp.163.com");props.put("mail.smtp.auth","true");Session session=Session.getInstance(props);//构造信息体 MimeMessage message =new MimeMessage(session);//发件地址 Address address = new InternetAddress("邮箱地址@163.com"); message.setFrom(address);//收件地址 Address toAddress = new InternetAddress(addr); message.setRecipient(MimeMessage.RecipientType.TO, toAddress);//主题 message.setSubject(subject);//正文 message.setText(text);message.saveChanges();Transport transport = session.getTransport("smtp"); transport.connect("smtp.163.com", "邮箱地址@163.com", "密码"); transport.sendMessage(message, message.getAllRecipients());transport.close();}}

优化:

使用配置文件解耦,以后更改邮箱直接修改配置文件即可,不用修改java类

使用Properties类进行操作

Properties props=new Properties();
//props.put("mail.smtp.host","smtp.163.com");//邮件服务器
//props.put("mail.smtp.auth","true");InputStream in = MailUtil.class.getClassLoader().getResourceAsStream("mail.properties");
if (in == null) {throw new RuntimeException("配置文件不存在");
}
props.load(in);
/*取值使用props.getProperty("mail.host");mail.properties:mail.host=smtp.163.commail.username=mail.password=mail.from=*/