Java使用javax.mail发送邮件详解

0 下载量 158 浏览量 更新于2024-08-31 收藏 54KB PDF 举报
本文将详细介绍如何使用Java的javax.mail包来实现邮件发送功能,包括设置邮件的基本信息、配置服务器验证以及实现发送过程。 在Java中,使用`javax.mail`库可以方便地发送电子邮件。这个库提供了丰富的API来处理邮件的创建、配置和发送。下面我们将详细讲解如何利用这个库实现邮件发送。 首先,我们需要定义一个包含邮件基本信息的类`EmailMessage`,如下所示: ```java public class EmailMessage { // 邮件的基本信息 public static String TO = "xxx@xxx.com"; // 收件人邮箱 public static String FROM = "xxx@xxx.com"; // 发件人邮箱 public static String FROM_NAME = "xxx"; // 发件人名称 public static String CC = "xxx@nxxx.com"; // 抄送人 public static String BCC = "xxx@nxxx.com"; // 暗送人 public static String EMAIL_CONTENT_TYPE = "text/plain"; // 邮件内容类型 public static String EMAIL_SUBJECT = "TestEmailWithJavaMail"; // 邮件标题 public static String EMAIL_HEADER = "ThisIsEmailHeader"; // 邮件头 public static String EMAIL_BODY = "<a href=\"http://www.baidu.com\">ThisIsEmailBody</a>"; // 邮件正文 public static String EMAIL_HOST = "smtp.xxx.com"; // 邮件服务器地址 public static Date SEND_DATE = new Date(); // 发送时间 public static boolean VALIDATE = true; // 是否需要验证用户名和密码 } ``` 接下来,我们需要创建一个`Authenticator`类来处理服务器验证,通常用于提供用户名和密码: ```java public class SMTPAuthenticator extends Authenticator { private String username; private String password; public SMTPAuthenticator(String username, String password) { this.username = username; this.password = password; } @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } } ``` 然后,我们编写发送邮件的主要逻辑,包括创建`Session`、`MimeMessage`对象,设置邮件属性并发送: ```java import javax.mail.*; import javax.mail.internet.*; public class EmailSender { public static void main(String[] args) throws Exception { // 创建Properties对象,配置邮件服务器参数 Properties props = System.getProperties(); props.put("mail.smtp.host", EmailMessage.EMAIL_HOST); props.put("mail.smtp.auth", EmailMessage.VALIDATE); // 如果需要验证,创建Authenticator对象 if (EmailMessage.VALIDATE) { Authenticator auth = new SMTPAuthenticator(EmailMessage.FROM, "your_password"); props.put("mail.smtp.auth", "true"); Session session = Session.getInstance(props, auth); } else { Session session = Session.getDefaultInstance(props); } // 创建MimeMessage对象 MimeMessage message = new MimeMessage(session); // 设置发件人、收件人、主题、日期等信息 message.setFrom(new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME)); message.setRecipient(Message.RecipientType.TO, new InternetAddress(EmailMessage.TO)); message.setRecipient(Message.RecipientType.CC, new InternetAddress(EmailMessage.CC)); message.setRecipient(Message.RecipientType.BCC, new InternetAddress(EmailMessage.BCC)); message.setSubject(EmailMessage.EMAIL_SUBJECT); message.setSentDate(EmailMessage.SEND_DATE); // 设置邮件内容 Multipart multipart = new MimeMultipart(); BodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent(EmailMessage.EMAIL_BODY, EmailMessage.EMAIL_CONTENT_TYPE); multipart.addBodyPart(htmlPart); message.setContent(multipart); // 发送邮件 Transport.send(message); System.out.println("邮件已发送!"); } } ``` 在实际应用中,你需要替换`EmailMessage`类中的静态变量,如邮箱地址、服务器地址和验证信息,并根据需要调整邮件内容。此外,如果邮件服务器需要SSL/TLS加密,还需要在`props`中添加相应的配置项,例如`mail.smtp.starttls.enable`或`mail.smtp.socketFactory.port`等。 总结,通过`javax.mail`库,我们可以方便地在Java程序中实现邮件发送功能。主要步骤包括:设置邮件信息、创建`Authenticator`(如果需要验证)、创建`Session`、构建`MimeMessage`并发送。记得在实际使用时,要根据实际情况调整配置和验证信息。