Java发邮件:Could not connect to SMTP host: smtp.163.com, port: 25;

时间:2021-07-18 14:33:15
这是我的发邮件的函数:
public static boolean SendEmailTest(String toEmailStr, String title, String content, String fromEmail) throws AddressException{
boolean flag = false;

Properties props = new Properties();
Session sendMailSession;
Transport transport;
sendMailSession = Session.getInstance(props, null);
props.put("mail.smtp.host", "smtp.163.com");
props.put("mail.smtp.auth", "ture");
try{
transport = sendMailSession.getTransport("smtp");
System.out.println("1");
transport.connect("smtp.163.com", "joehenu", "qiao1988feng"); //到这里的时候就停下来了
System.out.println("2");
Message newMessage = new MimeMessage(sendMailSession);
System.out.println("3");
//設置mail的主題
String mail_subject = title;

newMessage.setSubject(mail_subject);
Address address[] = {new InternetAddress(fromEmail)};//改变发件人地址
newMessage.addFrom(address);
//設置收件人地址
newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmailStr));
//設置mail正文
newMessage.setSentDate(new Date());
String mail_text=content;
newMessage.setContent(mail_text, "text/plain;charset=gb2312");
System.out.println("4");
//保存發送信息
newMessage.saveChanges();
System.out.println("5");
transport.send(newMessage, newMessage.getRecipients(Message.RecipientType.TO));
flag = true;
System.out.println("6");
transport.close();
}catch(Exception e){
System.out.println("7");
flag = false;
System.out.println(e);
}
return flag;
}

下面是log信息:
1
7
javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25;
  nested exception is:
java.net.ConnectException: Connection timed out: connect
tmp=false

一直查找不到是什么问题?高手帮忙解决一下呗,小弟多谢了

2 个解决方案

#1


下面是我的调用方法:
boolean tmp = SendEmailTest("joehenu@163.com","123","456","joehenu@163.com");
不知道为什么,一直发送不了

#2


用java mail
 public static void main(String[] args) {
        // 应用示例:线程化发送邮件
        new Thread() {
            @Override
            public void run() {
                System.out.println("SENDER-" + this.getId() + ":/>" + "开始发送邮件...");
                /**
emailServer:ym.163.com
emailUserName:caiping_li@rbtk.com
emailUserPassword:li1185ping
   */
                // 创建邮件对象
                Mail mail = new Mail();
                mail.setHost("stmp.qq.com"); // 邮件服务器地址
                mail.setFrom("发件人邮箱"); //发件人邮箱
                mail.addTo("收件人邮箱"); // 收件人邮箱
                mail.setSubject("邮件主题"); // 邮件主题
                mail.setUser("发件人邮箱"); // 发件人邮箱
                mail.setPassword("pwd"); // 密码
                mail.setContent("这是一个测试,请不要回复!"); // 邮件正文
                System.out.println(mail.send()); // 发送
                System.out.println("SENDER-" + this.getId() + ":/>"
                        + "邮件已发送完毕!");
            }
        }.start();
    }

#1


下面是我的调用方法:
boolean tmp = SendEmailTest("joehenu@163.com","123","456","joehenu@163.com");
不知道为什么,一直发送不了

#2


用java mail
 public static void main(String[] args) {
        // 应用示例:线程化发送邮件
        new Thread() {
            @Override
            public void run() {
                System.out.println("SENDER-" + this.getId() + ":/>" + "开始发送邮件...");
                /**
emailServer:ym.163.com
emailUserName:caiping_li@rbtk.com
emailUserPassword:li1185ping
   */
                // 创建邮件对象
                Mail mail = new Mail();
                mail.setHost("stmp.qq.com"); // 邮件服务器地址
                mail.setFrom("发件人邮箱"); //发件人邮箱
                mail.addTo("收件人邮箱"); // 收件人邮箱
                mail.setSubject("邮件主题"); // 邮件主题
                mail.setUser("发件人邮箱"); // 发件人邮箱
                mail.setPassword("pwd"); // 密码
                mail.setContent("这是一个测试,请不要回复!"); // 邮件正文
                System.out.println(mail.send()); // 发送
                System.out.println("SENDER-" + this.getId() + ":/>"
                        + "邮件已发送完毕!");
            }
        }.start();
    }