我正在使用JavaMail编写一个小型Java应用程序,该应用程序向用户发送自动电子邮件。他们可以在两个端口之间选择(现在):25和587。可以通过GUI上的单选按钮选择端口。

我添加了一个测试按钮,以允许用户测试电子邮件设置(包括端口)。但是,由于某种原因,一旦用户尝试发送测试电子邮件,就无法更改端口。Javamail将始终使用原始测试电子邮件的端口。

示例:用户尝试在端口25上发送电子邮件,而JavaMail表示无法在端口25上连接(例如,SMTP主机使用另一个端口)。用户单击端口587,然后尝试发送新电子邮件。JavaMail抛出错误,再次无法连接端口25。

我对为什么感到困惑。每次发送新的测试电子邮件时,都会创建一个全新的SendMailUsingAuthentication对象。在该类中,属性始终会重置为正确的端口。据我所知,每次调试时,所有变量都是正确的,并且与正确的端口相关联。我缺少运输中发生的事情吗?

在前端GUI中:

private void testButtonActionPerformed(java.awt.event.ActionEvent evt) {

int port = port25RadioButton.isSelected() ? PORT_25 : PORT_587;

notifier = new SendMailUsingAuthentication(hostNameTextField.getText(),

userTextField.getText(), getPassword(), emailTextField.getText().split(","),port);

Thread wait = new Thread(new Runnable() {

public void run() {

try {

changeStatusText("Sending test email...");

notifier.postTestMail();

changeStatusText("Test email sent.");

} catch (AddressException ex) {

changeStatusText("Error. Invalid email address name.");

} catch (MessagingException ex) {

changeStatusText("SMTP host connection refused.");

System.err.println(ex.getMessage());

} catch (Exception ex) {

System.err.println(ex);

}

}

});

wait.start();

}

在电子邮件发件人类别中:

public void postTestMail() throws MessagingException, AddressException{

String[] testReciever = new String[1];

testReciever[0] = emailList[0];

postMail(testReciever, "Test email.", "Your email settings are successfully set up.", emailFromAddress);

}

private void postMail(String recipients[], String subject,

String message, String from) throws MessagingException, AddressException {

//Set the host smtp address

Properties props = new Properties();

props.put("mail.smtp.port", smtpPort);

props.put("mail.smtp.host", smtpHostName);

props.put("mail.smtp.auth", "true");

props.put("mail.smtp.starttls.enable", true);

Authenticator auth = new SMTPAuthenticator();

Session session = Session.getDefaultInstance(props, auth);

session.setDebug(false);

// create a message

Message msg = new MimeMessage(session);

// set the from and to address

InternetAddress addressFrom = new InternetAddress(from);

msg.setFrom(addressFrom);

InternetAddress[] addressTo = new InternetAddress[recipients.length];

for (int i = 0; i < recipients.length; i++) {

addressTo[i] = new InternetAddress(recipients[i]);

}

msg.setRecipients(Message.RecipientType.TO, addressTo);

// Setting the Subject and Content Type

msg.setSubject(subject);

msg.setContent(message, "text/plain");

Transport.send(msg);

}

java发送邮件设置端口_如何更改JavaMail端口相关推荐

  1. java发送邮件设置邮件头的MessageId解决办法,发送邮件代码,u-mail的示例代码

    参考链接 业务描述:使用U-Mail进行邮件的发送,需要自定义任务标识,用于更新本地邮件的发送状态 说明:直接使用setHeader()是失效的 解决方式: public class MyMimeMe ...

  2. java jdk设置字符集_使用JDK 11在Java字符串上的新方法

    java jdk设置字符集 Java的String类似乎将在JDK 11中获得一些新方法,该方法将于2018年9月发布. 错误号 错误标题 新的String方法 描述 JDK-8200425 字符串: ...

  3. 打开端口_打印机ip及端口设置

    越洋帮路由网原创:文章是关于"打印机ip及端口设置"的相关知识分享,希望可以帮到大家. - 素材来源网络 编辑:小易. 随着科学技术的发展,各种技术成果也进入到千家万户,近日,有人 ...

  4. java获取空闲端口_获取系统空闲端口

    端口取值范围 以下搜自互联网 一般用到的是1到65535,其中0不使用,1-1023为系统端口,也叫BSD保留端口;1024-65535为用户端口,又分为: BSD临时端口(1024-5000)和BS ...

  5. linux如何改sftp端口,CentOS如何更改SFTP端口

    SFTP(SSH文件传输协议)是一种安全文件协议,用于通过加密连接在两个主机之间传输文件.本文介绍了如何在Linux中更改默认的SFTP端口.我们还将向您展示如何配置防火墙以允许在新端口上使用. SF ...

  6. 1个ieee1394端口_如何使用圆形端口进行波导激励和终止

    小编引言: 近期微信公众号开始试行乱序推送,为了让您能够持续阅览到多物理场仿真相关的精选文章和视频内容,并在第一时间获取 COMSOL 组织的各类培训和免费网络研讨会的通知信息,建议点击上方蓝字 &q ...

  7. 华为云占用443端口_关于XAMPP默认端口80和443被占用的问题

    关于安装xampp-win32-1.8.1-VC9-installer.zip后启动时候报端口80和443被占用的问题解决 xampp-win32-1.8.1-VC9-installer.zip下载地 ...

  8. python测试udp端口_怎样测试UDP端口

    文章概述:怎样测试远程UDP端口,我们一般情况下,应用服务都使用的TCP端口,但是某些情况下,我们也需要开启UDP端口.本文简要描述怎样测试UDP端口是否正常? TCP端口大家都知道,比如80端口,可 ...

  9. java调用siri 语言_如何更改Siri的声音,口音,性别和语言

    java调用siri 语言 Most of us are familiar with Siri as an American female voice. What you may not realiz ...

最新文章

  1. nginx将泛解析的匹配域名绑定到子目录配置方法
  2. Android8.0运行时权限策略变化和适配方案
  3. 在嵌入式学习过程中,很多人都有这样的困惑!——为什么要学习嵌入式技术?...
  4. 苹果M1芯片升级果然很炸场:性能暴涨功耗速降!但最香新品竟是无降噪AirPods 3...
  5. PHP 将二叉查找树转换为双向链表,要求不能创建新节点,只能调节节点指针
  6. 测试GPU的材质填充率
  7. ShopEx 手动使用分类做导航时,获取当前导航的焦点状态
  8. Linux Storage I/O Stack v1.0
  9. 活动推荐 | 2018网易未来科技峰会剧透!今年最热的会是什么?
  10. express 设置handlebars模板引擎
  11. NYOJ题目79-拦截导弹(最长递减子序列)
  12. Nginx防盗链、访问控制、解析php相关配置、Nginx代理
  13. HTML基本语法总结
  14. 线性链表头插法,插入,删除操作(完整代码)
  15. 51单片机usb烧录电路_51单片机怎么用usb烧写程序
  16. 售前的价值在哪里?这个问题不简单
  17. 只有一个文件的开源富文本编辑器,麻雀虽小五脏俱全就是它了
  18. “感动中国”2012年度人物颁奖词
  19. 基本DOS命令---6.关机重启操作命令
  20. python numpy安装失败_Mac下安装Python的numpy库失败的解决方法

热门文章

  1. 12306网站秒杀火车票 谁是幕后推手?
  2. 系统盘没装多少东西,为什么电脑会卡?
  3. LADP Admin
  4. 5G PDSCH物理层过程
  5. 5G/NR 如何确定PDSCH的MCS和TB size学习总结
  6. 6.19日更新下 饿了么/美团脚本相关问题专栏
  7. 基于多项式插值的亚像素边缘定位算法(python)
  8. 乐优商城练手项目相关技术总结
  9. 给定一个正整数n, 输出1到n的所有排列 如输入 3 输出 123, 132, 213, 231, 312, 321 (Java实现)
  10. WINS服务器和DNS服务器有什么区别?