用Javamail发送邮件时,在Transport.send时卡住,不报错没有异常

wang_pangHu 2019-04-09 03:55:37
在本地发送邮件一切正常,
将项目部署到服务器上,
通过telnet 邮箱服务器及端口 可以连接邮箱服务器,
但是执行发送邮件时执行到最后一步 Transport.send(message) 卡住,没有报错也没有异常:
// 初始化连接邮件服务器的会话信息
private static Properties props = null;

static {
props = new Properties();
props.setProperty("mail.transport.protocol", PROTOCOL);
props.setProperty("mail.smtp.host", HOST);
props.setProperty("mail.smtp.port", PORT);
props.setProperty("mail.smtp.auth", IS_AUTH);
props.setProperty("mail.debug",IS_ENABLED_DEBUG_MOD);
}

/**
* 向邮件服务器提交认证信息
*/
static class MyAuthenticator extends Authenticator {

private String username = "用户名";

private String password = "密码";

public MyAuthenticator() {
super();
}

public MyAuthenticator(String username, String password) {
super();
this.username = username;
this.password = password;
}

@Override
protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(username, password);
}
}

//发送带附件邮件
public static void sendMultipleEmail(String fileNames,String subject,String content,String toUsers) {
String charset = "utf-8"; // 指定中文编码格式
// 创建Session实例对象
Session session = Session.getInstance(props,new MyAuthenticator());
_log.info("设置邮箱服务器及端口成功");
// 创建MimeMessage实例对象
MimeMessage message = new MimeMessage(session);
// 设置主题
try {
message.setSubject(subject);
message.setFrom(new InternetAddress(from,"张三",charset));

_log.info("设置邮件主题:"+subject);
// 设置发送人

_log.info("设置邮件发件人:"+from);

// 设置收件人
String[] toUserArr = toUsers.split(";");
Address[] address = null;
if (toUserArr.length > 0) {
address = new InternetAddress[toUserArr.length];
for (int i = 0; i < toUserArr.length; i++) {

address[i] = new InternetAddress(toUserArr[i],toUserArr[i],charset);

}
}
message.setRecipients(RecipientType.TO,address);

_log.info("设置邮件收件人:"+toUsers);

// 设置发送时间
message.setSentDate(new Date());

// 设置优先级(1:紧急 3:普通 5:低)
message.setHeader("X-Priority", "3");

// 创建一个MIME子类型为"mixed"的MimeMultipart对象,表示这是一封混合组合类型的邮件
MimeMultipart mailContent = new MimeMultipart("mixed");
message.setContent(mailContent);

// 附件
String[] files = fileNames.split(";");
for (int i = 0; i < files.length; i++) {
MimeBodyPart attach = new MimeBodyPart();
DataSource ds = new FileDataSource(files[i]);
DataHandler dh = new DataHandler(ds);
attach.setDataHandler(dh);
attach.setFileName(MimeUtility.encodeText(files[i].substring(files[i].lastIndexOf("\\")+1)));
mailContent.addBodyPart(attach);
}

MimeBodyPart mailBody = new MimeBodyPart();

// 将附件和内容添加到邮件当中
mailContent.addBodyPart(mailBody);

_log.info("添加附件");

// 邮件正文
MimeMultipart body = new MimeMultipart("related"); //邮件正文也是一个组合体,需要指明组合关系
mailBody.setContent(body);

MimeBodyPart htmlPart = new MimeBodyPart();

body.addBodyPart(htmlPart);

// html邮件内容
MimeMultipart htmlMultipart = new MimeMultipart("alternative");
htmlPart.setContent(htmlMultipart);
MimeBodyPart htmlContent = new MimeBodyPart();
htmlContent.setContent( content, "text/html;charset=gbk");
htmlMultipart.addBodyPart(htmlContent);
_log.info("设置正文:"+content);
// 保存邮件内容修改
message.saveChanges();
_log.info("保存修改");

// 发送邮件
Transport.send(message);
_log.info("发送成功");
} catch (MessagingException e) {
_log.error("邮件参数设置出错:"+e.getMessage());
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
_log.error("不支持的编码:"+e.getMessage());
e.printStackTrace();
}
}
请各路大神指出可能的原因,谢谢!
...全文
2480 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 z_open 的回复:
楼主怎么解决的
请问楼主怎么解决的?
z_open 2020-03-08
  • 打赏
  • 举报
回复
楼主怎么解决的
济南彭于晏 2019-04-12
  • 打赏
  • 举报
回复
看看是不是你的邮箱发送的内容进了黑名单了。我也遇到过,把发件人换一个试试
wang_pangHu 2019-04-12
  • 打赏
  • 举报
回复
问题找到了,是由于虽然可以登录邮箱服务器,但是邮箱服务器无法给出回应,而在邮箱设置中没有设置超时时间,所以会在Transport.send处持续发送请求,不抛出异常
内容概要:本文围绕“基于非奇异终端滑模控制的两连杆机械臂轨迹跟踪仿真设计研究”展开,系统阐述了非奇异终端滑模控制(NTSMC)在二自由度机械臂高精度轨迹跟踪中的应用。研究聚焦于克服传统滑模控制存在的奇异性问题,提升系统在有限时间内的收敛速度与控制精度,确保控制过程的全局稳定性与强鲁棒性。文章详细介绍了机械臂的非线性动力学建模过程,构建了适用于NTSMC的滑模面与趋近律,结合Lyapunov稳定性理论对闭环控制系统进行了严格的数学证明。通过Matlab编程与Simulink多域仿真平台,对所设计的控制器进行了全面验证,仿真结果表明,该方法即使在存在外部干扰和模型参数不确定性的情况下,依然能够实现期望轨迹的精确、快速跟踪,并有效抑制了控制抖振现象。配套提供的完整Matlab代码与Simulink模型,极大地方便了研究结果的复现与二次开发。; 适合人群:具备自动控制原理、现代控制理论、机器人动力学及非线性系统分析基础的研究生、科研人员和自动化领域的工程技术人员,尤其适合正在从事先进控制算法研究或机器人控制系统开发的专业人士,熟练掌握Matlab/Simulink仿真环境者将能更好地利用本资源。; 使用场景及目标:①作为教学与科研范例,深入理解非奇异终端滑模控制的核心思想、设计流程及其相较于传统滑模控制的优势;②为工业机器人、服务机器人等领域的高精度、强鲁棒性运动控制系统设计提供直接的技术参考与解决方案;③支撑相关学术课题(如非线性控制、智能机器人控制、鲁棒控制等)的仿真验证与论文撰写工作。; 阅读建议:建议读者在阅读理论部分的同时,务必同步运行并调试所提供的Matlab代码与Simulink模型,通过调整控制器参数(如滑模面系数、增益等)来直观观察系统响应的变化,从而深刻理解参数整定对控制性能的影响;鼓励在此基础上探索NTSMC与神经网络、模糊逻辑等智能算法的融合,以进一步提升控制器的自适应能力与实用性。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧