gpt4 book ai didi

java - 从第一个方法调用第二个方法会更改第一个方法的行为

转载 作者:行者123 更新时间:2023-12-01 22:19:21 25 4
gpt4 key购买 nike

我正在尝试将电子邮件发送到两个不同的邮件服务器。我有一个指向一个邮件服务器 send 的方法,还有一个指向另一个邮件服务器 sendSecond 的方法。我希望电子邮件发送到两个电子邮件服务器,但是通过调用第一个邮件服务器方法,它将电子邮件两次发送到第二个邮件服务器,而不向第一个邮件服务器发送任何内容。为什么?我如何将其发送到两个电子邮件服务器?

第一个邮件服务器:Settings.instance().getMailServerIp()

第二邮件服务器:Settings.instance().getSecondMailServerIp()

    public synchronized void send(DefaultEmail defaultEmail, Set<User> to) {
System.setProperty("mail.smtp.host", Settings.instance().getMailServerIp());
Session.getDefaultInstance(System.getProperties(), null);
executor.execute(new FutureTask<Void>(new EmailTask(defaultEmail, to)));
sendSecond(defaultEmail, to);
}

public synchronized void sendSecond(DefaultEmail defaultEmail, Set<User> to) {
System.setProperty("mail.smtp.host", Settings.instance().getSecondMailServerIp());
Session.getDefaultInstance(System.getProperties(), null);
executor.execute(new FutureTask<Void>(new EmailTask(defaultEmail, to)));
}

最佳答案

mail.smtp.host 属性的工作方式有点像全局变量。这样的设置只有一种。当您调用 send 时,您将创建一个稍后传送邮件的 FutureTask。然后,您调用 sendSecond,这会将 mail.smtp.host 更改为第二个邮件服务器,并安排第二个任务来传递邮件。

稍后,这两个 future 任务都会运行并将邮件传递到 mail.smtp.host 的当前值(现在指向第二个邮件服务器)。

您可能希望找到一种方法将邮件传递到特定邮件服务器,而不是依赖全局mail.smtp.host属性。

关于java - 从第一个方法调用第二个方法会更改第一个方法的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com