如果您对文章有提议, 建议或者任何想表达的, 欢迎在下方评论区留言! 不断交流才是进步的捷径!
上一章我们使用JavaFX Scene Builder画出了第一个按钮组件, 并且成功的获取了组件内容.
这一章我们将会介绍JavaMail, 并且使用其来尝试发送第一封邮件.
什么是JavaMail?
Oracle官方推出的包, 用于处理邮件. 官方API文档
下载JavaMail包
Maven仓库的官方包地址: http://mvnrepository.com/artifact/javax.mail/mail/1.4.7 你也可以直接点击下载
下载完成后, 将其导入我们的项目.
创建发送邮件工具类EmailUtil
创建一个类, 类名称叫做EmailUtil, 用于保存有关Email的方法.
代码如下(请仔细认真阅读, 以便继续接下来的教学! ):
package sample;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
public class EmailUtil {
/**
*
* @param username 登录用户名
* @param password 登录密码
* @param fromNickname 发件人昵称
* @param toEmail 收件人邮箱
* @param toNickname 收件人昵称
* @param title 邮件主题
* @param content 邮件内容
*/
public static void sendEmail(String username, String password, String fromNickname, String toEmail, String toNickname, String title, String content) {
// 1. 创建参数配置, 用于连接邮件服务器的参数配置
Properties props = new Properties(); // 参数配置
props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)
props.setProperty("mail.smtp.host", "smtp.qq.com"); // 发件人的邮箱的 SMTP 服务器地址
props.setProperty("mail.smtp.auth", "true"); // 需要请求认证
// 2. 创建会话
Session session = Session.getDefaultInstance(props);
try {
Transport transport = session.getTransport();
/* 3. 创建一封邮件 */
// 3.1. 创建邮件对象
MimeMessage message = new MimeMessage(session);
// 3.2. From: 发件人
message.setFrom(new InternetAddress(username, fromNickname, "UTF-8"));
// 3.3. To: 收件人
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail, toNickname, "UTF-8"));
// 3.4. Subject: 邮件主题
message.setSubject(title, "UTF-8");
// 3.5. Content: 邮件内容
message.setContent(content, "text/html;charset=UTF-8");
/* 使用 邮箱账号 和 密码 连接邮件服务器
这里认证的邮箱必须与 message 中的发件人邮箱一致,否则报错*/
transport.connect(username, password);
//发送邮件
transport.sendMessage(message, message.getAllRecipients());
// 关闭连接
transport.close();
} catch (MessagingException | UnsupportedEncodingException m) {
m.printStackTrace();
}
}
}
回想一下我们平常发送邮件时需要填写的信息, 登录时需要填写用户名和密码, 需要填收件人邮箱, 邮件主题以及邮件内容, 各大邮箱会自动给我们填写发件人以及收件人昵称, 我们这里也需要手动填写.
其中,
// 1. 创建参数配置, 用于连接邮件服务器的参数配置
Properties props = new Properties(); // 参数配置
props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)
props.setProperty("mail.smtp.host", "smtp.qq.com"); // 发件人的邮箱的 SMTP 服务器地址
props.setProperty("mail.smtp.auth", "true"); // 需要请求认证
这三个的配置是qq邮箱的配置, 至于其他邮箱的配置, 请查阅各大邮箱的教程
我们可以写一个main方法, 用来测试这个发送邮件的方法是否好用:
在这里要注意, 如果用的是QQ邮箱配置的话, 密码填写的应该是授权码, 请查看自己qq邮箱授权码的官方教程
经过测试后, 我们可以收到刚刚发送的邮件, 至此, 我们的发送邮件的方法就写完了.
在下一章, 我们将会完成我们的邮件客户端, 并且比一般的还要美观! (反正是自己画的界面~)
下一章-->
第一个java桌面应用, javafx, 邮件客户端, java开发邮件客户端