我写的是一个发送邮件的程序,有时候会停在 try to connect to host ***.***.***.***
部分程序如下:
public boolean send() {
try {
setMessage();
Transport transport = mailSession.getTransport("smtp");
transport.connect(mail.getSmtpHost(), mail.getSmtpUser(),
mail.getSmtpPasswd()); //我估计是程序走到这个地方的时候一直在连接smtp服务器,然后服务器也没有响应。然后程序就不往下走了,也不抛异常。 transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
catch (NoSuchProviderException ex) {
System.out.println(ex.toString());
return false;
}
catch (MessagingException ex) {
System.out.println(ex.toString());
return false;
}
return true;
} 我的问题是能不能想个办法让判断一下当在这个地方停下的时候,让他从新连接一次smtp服务器。获取 conection to host
部分程序如下:
public boolean send() {
try {
setMessage();
Transport transport = mailSession.getTransport("smtp");
transport.connect(mail.getSmtpHost(), mail.getSmtpUser(),
mail.getSmtpPasswd()); //我估计是程序走到这个地方的时候一直在连接smtp服务器,然后服务器也没有响应。然后程序就不往下走了,也不抛异常。 transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
catch (NoSuchProviderException ex) {
System.out.println(ex.toString());
return false;
}
catch (MessagingException ex) {
System.out.println(ex.toString());
return false;
}
return true;
} 我的问题是能不能想个办法让判断一下当在这个地方停下的时候,让他从新连接一次smtp服务器。获取 conection to host
import java.util.*; import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import java.io.*;
/**
* @author Bromon
*/
public class SenderWithSMTPVer
{
String host="";
String user="";
String password="";
public void setHost(String host)
{
this.host=host;
}
public void setAccount(String user,String password)
{
this.user=user;
this.password=password;
}
public void send(String from,String to,String subject,String content)
{
Properties props = System.getProperties();
props.put("mail.smtp.host", host);//指定SMTP服务器
props.put("mail.smtp.auth", "true");//指定是否需要SMTP验证
try
{
Session mailSession = Session.getDefaultInstance(props, null);
mailSession.setDebug(true);//是否在控制台显示debug信息
Message message=new MimeMessage(mailSession);
message.setFrom(new InternetAddress(from));//发件人
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));//收件人
message.setSubject(subject);//邮件主题
message.setText(content);//邮件内容
message.saveChanges();
Transport transport = mailSession.getTransport("smtp");
transport.connect(host, user, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
SenderWithSMTPVer sm=new SenderWithSMTPVer();
sm.setHost("smtp.sina.com");//指定要使用的邮件服务器
sm.setAccount("账号","密码");//指定帐号和密码
/*
* @param String 发件人的地址
* @param String 收件人地址
* @param String 邮件标题
* @param String 邮件正文
*/
sm.send("发件人@sina.com","收件人@sina.com","标题","内容");
}
}