JavaMail发送邮件教程:QQ邮箱配置与示例代码
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设置和安全要求,所以在实际部署时需要根据具体情况进行调整。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-05-26 上传
2012-11-08 上传
2010-12-31 上传
2020-09-03 上传
2020-11-25 上传
weixin_38647517
- 粉丝: 2
- 资源: 964
最新资源
- web:基本网站,可提供移动网站体验
- java客户管理系统.zip
- 基于 MATLAB 实现的可视密码图示法设计【100010679】
- [CMS程序]普迅免费CMS v0.2 源码版_dx234cms_resource.zip源码ASP.NET网站源码打包下载
- LCD1602驱动代码
- js-game-init:我的新JavaScript游戏的基本框架
- 易语言俄罗斯方块游戏源码-易语言
- Hex to Hexdisp_hex_recentg6x_
- 手机酒吧网站模板_网站开发模板含源代码(css+html+js+图样).zip
- PowerfulObject全自动基于Mybatis生成Java代码工具.rar
- 基于 MATLAB 实现的 DCT 域的信息隐藏【100010684】
- 一个Vue弹幕视频播放器源码.zip
- D2C模式引领未来互联网消费时代-论文.zip
- HTMLtest2_html5_
- assignment11:作业#11
- ssa-interp:Go SSA 调试器和解释器