一、WPS发送邮件功能
WPS 内置了邮件发送功能,使用方便,但是需要配置邮箱信息才能使用。
1、首先在 WPS 中选中想要发送邮件的文档,点击“文件”->“发送”->“发送为附件”。
2、在弹出的“发送邮件”窗口中,填写收件人、抄送、格式等信息,点击“发送”按钮即可。
3、如果弹出“发件人用户身份验证”窗口,则需要输入邮箱账号和密码进行验证。
private static final String EMAIL_USERNAME = "你的邮箱账号";
private static final String EMAIL_PASSWORD = "你的邮箱密码";
private static final String EMAIL_HOST = "smtp.邮箱后缀";
public static void main(String[] args) throws Exception {
//创建一个邮件对象
MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
//设置发件人
message.setFrom(new InternetAddress(EMAIL_USERNAME));
//设置收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人邮箱"));
//设置邮件主题
message.setSubject("邮件主题");
//设置邮件内容
message.setContent("邮件内容", "text/html;charset=UTF-8");
//创建Transport对象
Transport transport = Session.getInstance(System.getProperties()).getTransport();
//连接邮件服务器
transport.connect(EMAIL_HOST,EMAIL_USERNAME,EMAIL_PASSWORD);
//发送邮件
transport.sendMessage(message, message.getAllRecipients());
//关闭连接
transport.close();
}
二、一键发送邮件功能
一键发送邮件功能是通过使用邮件 API 将邮件功能集成到程序中,并提供简单的 UI 界面,方便用户选择收件人、邮件主题和邮件内容。
1、创建 UI 界面,用于用户选择收件人、邮件主题和邮件内容。
2、使用 JavaMail API 创建邮件对象,设置收件人、邮件主题和邮件内容等信息。
3、使用 JavaMail API 发送邮件。
public static void main(String[] args) throws Exception {
//创建 JFrame 窗口
JFrame frame = new JFrame();
//添加组件到窗口,包括收件人、主题和内容选项等
frame.getContentPane().add(new EmailForm());
//设置窗口大小、可见性和关闭方式
frame.setSize(550, 350);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public class EmailForm extends JPanel {
private JTextField toField;
private JTextField subjectField;
private JTextArea contentArea;
public EmailForm() {
//创建组件
toField = new JTextField();
subjectField = new JTextField();
contentArea = new JTextArea();
JButton sendButton = new JButton("发送邮件");
//添加事件监听器
sendButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
//创建邮件对象
MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
//设置发件人
message.setFrom(new InternetAddress("发件人邮箱"));
//设置收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(toField.getText()));
//设置邮件主题
message.setSubject(subjectField.getText());
//设置邮件内容
message.setContent(contentArea.getText(), "text/html;charset=UTF-8");
//创建Transport对象
Transport transport = Session.getInstance(System.getProperties()).getTransport();
//连接邮件服务器
transport.connect("smtp.邮箱后缀", "发件人邮箱", "发件人密码");
//发送邮件
transport.sendMessage(message, message.getAllRecipients());
//关闭连接
transport.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
//将组件添加到 UI 界面
this.setLayout(new BorderLayout());
this.add(new JLabel(" 收件人:"), BorderLayout.WEST);
this.add(toField, BorderLayout.CENTER);
this.add(new JLabel(" 邮件主题:"), BorderLayout.NORTH);
this.add(subjectField, BorderLayout.NORTH);
this.add(new JScrollPane(contentArea), BorderLayout.CENTER);
this.add(sendButton, BorderLayout.SOUTH);
}
}
三、微信发送邮件功能
微信发送邮件功能是通过设置微信中的小程序,将程序与邮箱功能集成到一起,方便用户在微信中直接发送邮件。
1、在微信中下载并安装指定小程序。
2、在微信中进入小程序,填写收件人、邮件主题和邮件内容等信息,点击“发送”即可。
3、小程序通过 API 调用 JavaMail API 发送邮件。
public static void main(String[] args) throws Exception {
//创建微信小程序对象
MiniProgram miniProgram = new MiniProgram();
//添加事件监听器,用于发送邮件
miniProgram.setOnSendButtonClickListener(new OnSendButtonClickListener() {
public void onSendButtonClicked(String to, String subject, String content) {
try {
//创建邮件对象
MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
//设置发件人
message.setFrom(new InternetAddress("发件人邮箱"));
//设置收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
//设置邮件主题
message.setSubject(subject);
//设置邮件内容
message.setContent(content, "text/html;charset=UTF-8");
//创建Transport对象
Transport transport = Session.getInstance(System.getProperties()).getTransport();
//连接邮件服务器
transport.connect("smtp.邮箱后缀", "发件人邮箱", "发件人密码");
//发送邮件
transport.sendMessage(message, message.getAllRecipients());
//关闭连接
transport.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
//打开小程序的 UI 界面
miniProgram.showUI();
}
四、自动发送邮件的功能
自动发送邮件是指在程序中定时发送指定邮件,例如每天定时发送一封日报邮件。
1、使用 JavaMail API 创建邮件对象,设置收件人、邮件主题和邮件内容等信息。
2、使用 Timer 定时器设置邮件发送时间。
public static void main(String[] args) throws Exception {
//创建 Timer 定时器
Timer timer = new Timer();
//用于记录上一次邮件发送时间
Date lastSendTime = null;
//将邮件发送任务添加到定时器中
timer.schedule(new TimerTask() {
public void run() {
try {
Date now = new Date();
//如果当前时间满足发送条件,则发送邮件
if (isSendTime(now)) {
//创建邮件对象
MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
//设置发件人
message.setFrom(new InternetAddress("发件人邮箱"));
//设置收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人邮箱"));
//设置邮件主题
message.setSubject("邮件主题");
//设置邮件内容
message.setContent("邮件内容", "text/html;charset=UTF-8");
//创建Transport对象
Transport transport = Session.getInstance(System.getProperties()).getTransport();
//连接邮件服务器
transport.connect("smtp.邮箱后缀", "发件人邮箱", "发件人密码");
//发送邮件
transport.sendMessage(message, message.getAllRecipients());
//关闭连接
transport.close();
//更新上一次邮件发送时间
lastSendTime = now;
}
} catch (Exception e) {
e.printStackTrace();
}
}
//判断是否满足发送条件
private boolean isSendTime(Date now) {
if (lastSendTime == null) {
return true;
}
Calendar nowCalendar = new GregorianCalendar();
nowCalendar.setTime(now);
Calendar lastSendTimeCalendar = new GregorianCalendar();
lastSendTimeCalendar.setTime(lastSendTime);
return nowCalendar.get(Calendar.DAY_OF_YEAR) != lastSendTimeCalendar.get(Calendar.DAY_OF_YEAR);
}
}, 0, 60 * 60 * 1000); //定时发送时间间隔为1小时
}
五、扫描之后没有发送邮件的功能
扫描之后没有发送邮件的功能是指在扫描完毕之后,通过分析扫描结果自动发送邮件通知。
1、扫描完毕之后,将扫描结果存储到数据库中。
2、使用 JDBC 访问数据库,分析扫描结果,生成邮件内容。
3、使用 JavaMail API 发送邮件。
public static void main(String[] args) throws Exception {
//扫描完毕之后保存结果到数据库中
saveScanResult();
//根据扫描结果生成邮件内容
String content = generateEmailContent();
//创建邮件对象
MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
//设置发件人
message.setFrom(new InternetAddress("发件人邮箱"));
//设置收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人邮箱"));
//设置邮件主题
message.setSubject("邮件主题");
//设置邮件内容
message.setContent(content, "text/html;charset=UTF-8");
//创建Transport对象
Transport transport = Session.getInstance(System.getProperties()).getTransport();
//连接邮件服务器
transport.connect("smtp.邮箱后缀", "发件人邮箱", "发件人密码");
//发送邮件
transport.sendMessage(message, message.getAllRecipients());
//关闭连接
transport.close();
}
//保存扫描结果到数据库中
private static void saveScanResult() {
try {
//连接数据库
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
//执行保存操作
PreparedStatement statement = connection.prepareStatement("insert into scan_result (scan_time, result) values (?, ?)");
statement.setDate(1, new Date(System.currentTimeMillis()));
statement.setString(2, "扫描结果");
statement.executeUpdate();
//关闭连接
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//根据扫描结果生成邮件内容
private static String generateEmailContent() {
StringBuilder builder = new StringBuilder();
try {
//连接数据库
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
//查询扫描结果
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from scan_result");
//生成邮件内容
builder.append("扫描结果如下:
");
while (resultSet.next()) {
builder.append("" + resultSet.getDate("scan_time") + " : " + resultSet.getString("result") + "
");
}
//关闭连接
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
return builder.toString();
}