Java Mail 简单实例 出现的问题

本文介绍了一段使用Java发送邮件的代码,在运行时遇到NoSuchProviderException异常的情况。该文详细展示了代码实现,并针对出现的问题进行了初步排查,怀疑与163邮件服务器配置有关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原码如下:

import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendMail {
    public static void main(String[] args) {
        try {
            Properties p = new Properties(); //Properties p = System.getProperties();
            p.put("mail.smtp.auth", "true");
            p.put("mail.transport.protocol", "smtp");
            p.put("mail.smtp.host", "smtp.163.com");
            p.put("mail.smtp.port", "25");

System.out.println("建立会话.....");
            Session session = Session.getInstance(p);
System.out.println("建立信息.....");
            Message msg = new MimeMessage(session);
 
            msg.setFrom(new InternetAddress("ahhqdyh@163.com")); //发件人
            msg.setRecipient(Message.RecipientType.TO,
                             new InternetAddress("ahhqdyh@163.com")); //收件人
     msg.setSentDate(new Date()); // 发送日期
            msg.setSubject("答话稀有"); // 主题
            msg.setText("快点下在"); //内容
System.out.println("邮件服务器进行验证......");

 try{
            Transport tran = session.getTransport("smtp");
            tran.connect("smtp.163.com", "bluebit_cn", "xiaohao");           
            tran.sendMessage(msg, msg.getAllRecipients()); // 发送
System.out.println("邮件服务器进行验证成功");
System.out.println("邮件发送成功");
 }catch(Exception e){
System.out.println("邮件服务器进行验证失败");
 }

          
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

编译通过了,但执行时出现:

javax.mail.NoSuchProviderException: smtp
                                  at javax.mail.Session.getService(Session.java:780)
                                  at javax.mail.Session.getTransport(Session.java:718)
                                  at javax.mail.Session.getTransport(Session.java:661)
                                  at javax.mail.Session.getTransport(Session.java:641)
                                  at SendMail.main(SendMail.java:28)

根据意思表示为SMTP对象是空的,,是不是和163的邮件服务器有关呀,我的系统不用加载什么SMTP服务吧?

请高手指点一下,谢谢!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值