You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:如何在Minecraft服务器中通过Maven集成JavaMail插件

在Minecraft服务器中通过Maven集成JavaMail插件的实现方案

嘿,我看你和朋友在搭建Minecraft服务器,想要集成JavaMail插件来实现邮件功能对吧?你们已经手动加了Mail.jar和Activation.jar,还写了部分代码,我来帮你把整个流程捋得更顺畅,包括用Maven正确管理依赖、补全代码,还有在MC服务器里调用的方法~

一、替换手动导入Jar包,改用Maven依赖管理

手动导入Jar包容易出现版本冲突或者依赖缺失的问题,直接在pom.xml里添加以下依赖,Maven会自动帮你处理所有依赖关系:

<dependencies>
    <!-- JavaMail API 稳定版本 -->
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.6.2</version>
    </dependency>
    <!-- JavaMail 依赖的Activation框架 -->
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>
</dependencies>

二、补全你的邮件发送代码

我把你写的代码补全成完整可运行的版本,还加了适合Minecraft服务器调用的方法:

package com.parlagames;

import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class App {

    // 供Minecraft服务器调用的邮件发送方法
    public void sendMail(String smtpHost, String smtpPort, 
                         final String senderEmail, final String senderPassword,
                         String receiverEmail, String mailSubject, String mailContent) {
        
        // 配置SMTP服务器属性
        Properties mailProps = new Properties();
        mailProps.put("mail.smtp.host", smtpHost);
        mailProps.put("mail.smtp.port", smtpPort);
        mailProps.put("mail.smtp.auth", "true");
        mailProps.put("mail.smtp.starttls.enable", "true"); // 开启TLS加密,多数邮箱需要

        // 创建带身份验证的邮件会话
        Session mailSession = Session.getInstance(mailProps,
                new javax.mail.Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(senderEmail, senderPassword);
                    }
                });

        try {
            // 构建邮件内容
            Message mailMessage = new MimeMessage(mailSession);
            mailMessage.setFrom(new InternetAddress(senderEmail));
            mailMessage.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiverEmail));
            mailMessage.setSubject(mailSubject);
            mailMessage.setText(mailContent);

            // 发送邮件
            Transport.send(mailMessage);
            System.out.println("✅ 邮件发送成功!");

        } catch (MessagingException e) {
            System.err.println("❌ 邮件发送失败:" + e.getMessage());
            // 这里可以根据需求记录日志或者通知管理员
        }
    }

    // 本地测试用的main方法,方便你先验证邮件功能是否正常
    public static void main(String[] args) {
        App mailSender = new App();
        // 示例:用QQ邮箱发送(记得替换成你的邮箱和授权码)
        mailSender.sendMail("smtp.qq.com", "587",
                "your-qq-email@qq.com", "your-qq-authorization-code",
                "admin@your-domain.com", "MC服务器测试邮件", "这是来自Minecraft服务器的测试邮件!");
    }
}

小提示:

  • 不同邮箱的SMTP配置不一样:
    • Gmail:SMTP地址smtp.gmail.com,端口587,需要用应用专用密码(开启两步验证后才能生成)
    • QQ邮箱:SMTP地址smtp.qq.com,端口587465,密码是邮箱的授权码(在邮箱设置里开启POP3/SMTP后生成)
  • 绝对不要把邮箱密码硬编码在代码里!后续可以把这些配置写到插件的config.yml中,通过读取配置文件来获取,更安全。

三、在Minecraft插件中调用邮件功能

把邮件发送方法集成到你的MC插件主类里,比如在服务器启动、玩家注册等事件触发时发送邮件:

package com.parlagames;

import org.bukkit.plugin.java.JavaPlugin;

public class MailNotificationPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        getLogger().info("📧 邮件通知插件已启用!");
        
        // 示例:服务器启动时给管理员发送通知邮件
        App mailSender = new App();
        // 这里建议从config.yml读取配置,我先写死示例
        mailSender.sendMail("smtp.qq.com", "587",
                "your-qq-email@qq.com", "your-qq-authorization-code",
                "admin@your-domain.com", "MC服务器启动通知", "服务器已成功启动,欢迎登录!");
    }
}

别忘了在plugin.yml中配置插件主类,确保服务器能正确加载:

name: MailNotificationPlugin
main: com.parlagames.MailNotificationPlugin
version: 1.0
description: 给Minecraft服务器添加邮件通知功能

四、常见问题注意

  • 确保你的服务器主机没有封禁SMTP端口(比如25、587、465),如果发送失败可以联系主机商确认端口是否开放
  • 处理邮件发送的异常,不要让发送失败导致整个插件崩溃
  • 如果是线上服务器,建议添加邮件发送的频率限制,避免被邮箱服务商判定为垃圾邮件

内容的提问来源于stack exchange,提问作者Dany123

火山引擎 最新活动