用Javamail发送邮件时,在Transport.send时卡住,不报错没有异常
在本地发送邮件一切正常,
将项目部署到服务器上,
通过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();
}
}
请各路大神指出可能的原因,谢谢!