JavaMail发送邮件教程:QQ邮箱配置与示例代码

0 下载量 3 浏览量 更新于2024-08-30 收藏 330KB PDF 举报
"使用JavaMail发送邮件" 在Java中发送邮件,通常我们会利用JavaMail API,这是一个用于处理邮件的开源库,它提供了与多种邮件传输协议(如SMTP、POP3等)交互的能力。在这个示例中,我们将专注于使用SMTP协议通过JavaMail发送邮件,特别是对于QQ邮箱的配置和使用。 首先,为了引入JavaMail API,我们需要在项目中添加相应的依赖。如果你使用的是Gradle,可以在`build.gradle`文件的`dependencies`块中添加以下内容: ```gradle implementation 'com.sun.mail:javax.mail:1.6.2' ``` 这个依赖包含了处理邮件发送所需的所有核心类。如果项目使用的是Maven,对应的依赖是在`pom.xml`文件中添加: ```xml <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> </dependency> ``` 接下来,为了能够通过SMTP发送邮件,我们需要确保已经启用了邮箱的SMTP服务。对于QQ邮箱,你需要在设置->账户中开启POP3/SMTP服务。这通常需要验证你的手机号码并获取一个授权码,这个授权码将用于第三方应用进行身份验证。 有了授权码后,我们就可以编写发送邮件的Java代码。以下是一个简单的示例,展示如何发送带有附件的邮件: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.Properties; public class MailSender { public static boolean sendQQMail(String receiver, String subject, String message, String attachmentFilePath) { if (StringUtils.isEmpty(receiver)) { return false; } final String from = "your_email@qq.com"; // 发件人邮箱 final String password = "your_authorization_code"; // 发件人授权码 // 邮件服务器配置 String host = "smtp.qq.com"; // 设置系统属性 Properties properties = System.getProperties(); properties.setProperty("mail.smtp.host", host); // 配置SMTP服务 properties.put("mail.smtp.auth", "true"); properties.put("mail.smtp.starttls.enable", "true"); // 创建会话 Session session = Session.getInstance(properties, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(from, password); } }); try { // 创建消息 Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(from)); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver)); msg.setSubject(subject); msg.setText(message); // 添加附件 MimeBodyPart messagePart = new MimeBodyPart(); messagePart.setText(message); MimeBodyPart attachmentPart = new MimeBodyPart(); attachmentPart.attachFile(attachmentFilePath); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messagePart); multipart.addBodyPart(attachmentPart); msg.setContent(multipart); // 发送邮件 Transport.send(msg); return true; } catch (MessagingException e) { e.printStackTrace(); return false; } } } ``` 在上述代码中,我们首先设置了邮件服务器的相关属性,并创建了一个`Session`对象来处理认证。接着,创建`Message`对象并填充发件人、收件人、主题和内容。如果有附件,使用`MimeBodyPart`和`Multipart`来添加。最后,通过`Transport.send()`方法发送邮件。 这个例子展示了如何使用JavaMail API发送带附件的邮件,但请注意,实际应用中可能需要处理异常、错误报告以及更复杂的邮件格式。此外,不同的邮件服务商可能会有不同的SMTP设置和安全要求,所以在实际部署时需要根据具体情况进行调整。