java中实现发送邮件 session.getTransport() 为什么是null? 80C

java中实现发送邮件 session.getTransport() 为什么是null?

             Properties prop = new Properties();
     prop.setProperty("mail.host", "smtp.qq.com");
     prop.setProperty("mail.transport.protocol", "smtp");
     prop.setProperty("mail.smtp.auth", "true");
     //使用JavaMail发送邮件的5个步骤
     //1、创建session
     Session session = Session.getInstance(prop);
     //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
     session.setDebug(true);
     //2、通过session得到transport对象
     Transport ts = session.getTransport();-----------》这一步报空指针
0

4个回答

public static void send(String fileName){

    Properties prop = new Properties();
    prop.setProperty("mail.host", "smtp.partner.outlook.cn");
    prop.setProperty("mail.transport.protocol", "smtp");
    prop.setProperty("mail.smtp.port", "587");
    prop.setProperty("mail.smtp.auth", "true");
    prop.setProperty("mail.smtp.starttls.enable", "true");
    //使用JavaMail发送邮件的5个步骤
    //1、创建session
    Session session = Session.getInstance(prop);
    //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
    session.setDebug(true);
    //2、通过session得到transport对象
    Transport ts = null;
    try {
        ts = session.getTransport();
    } catch (NoSuchProviderException e) {
        e.printStackTrace();
    }
    //3、连上邮件服务器
    try {
        ts.connect("smtp.partner.outlook.cn", "账号", "密码");
    } catch (MessagingException e) {
        e.printStackTrace();
    }
    //4、创建邮件
    Message message = null;
    try {
        message = createAttachMail(session,fileName);
    } catch (Exception e) {
        e.printStackTrace();
    }
    //5、发送邮件
    try {
        ts.sendMessage(message, message.getAllRecipients());
    } catch (MessagingException e) {
        e.printStackTrace();
    }
    finally {
        try {
            ts.close();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

}

0
weixin_42464028
weixin_42464028 回复weixin_39808420: 我引的是 javax.mail-1.5.6.jar 这个包
8 个月之前 回复
weixin_39808420
MR-----zhang 这是我用到的导入的包,javamail是1.4.7版本的import java.io.File; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart;
8 个月之前 回复
weixin_39808420
MR-----zhang 回复weixin_42464028: 有重新引入一次javamail包试试吗,还有看代码里面导的包是不是导错了
8 个月之前 回复
weixin_42464028
weixin_42464028 依旧报错: javax.mail.NoSuchProviderException: java.lang.NullPointerException at javax.mail.Session.getTransport(Session.java:298) at javax.mail.Session.getTransport(Session.java:307) at javax.mail.Session.getTransport(Session.java:278)
8 个月之前 回复

能将控制台的详细信息发一下么

0
xnqq45108
xnqq45108 回复weixin_42464028: 建议你加上log4j。这样就能看到logger.log(Exception loading provider,var10)所报的详细信息了,
8 个月之前 回复
weixin_42464028
weixin_42464028 javax.mail.NoSuchProviderException: java.lang.NullPointerException at javax.mail.Session.getTransport(Session.java:298) at javax.mail.Session.getTransport(Session.java:307) at javax.mail.Session.getTransport(Session.java:278) at com.newtouch.cloud.templetmanage.controller.ReportFormSumController.storeMail(ReportFormSumController.java:241) at com.newtouch.cloud.templetmanage.controller.ReportFormSumController.remind(ReportFormSumController.java:45)
8 个月之前 回复

javax.mail.NoSuchProviderException: java.lang.NullPointerException
at javax.mail.Session.getTransport(Session.java:298)
at javax.mail.Session.getTransport(Session.java:307)
at javax.mail.Session.getTransport(Session.java:278)
at com.newtouch.cloud.templetmanage.controller.ReportFormSumController.storeMail(ReportFormSumController.java:241)
at com.newtouch.cloud.templetmanage.controller.ReportFormSumController.remind(ReportFormSumController.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)

0

测试效果在最下方。

完整源码,jdk为1.8的:

 public static void main(String[] args) {
        try {
            Properties prop = new Properties();
            prop.setProperty("mail.host", "smtp.qq.com");
            prop.setProperty("mail.transport.protocol", "smtp");
            prop.setProperty("mail.smtp.auth", "true");
            // 使用JavaMail发送邮件的5个步骤
            // 1、创建session
            Session session = Session.getInstance(prop);
            // 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
            session.setDebug(true);
            // 2、通过session得到transport对象
            session.setDebug(true);
            // 2、通过session得到transport对象
            Transport ts = session.getTransport();
            // 3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
            ts.connect("smtp.qq.com", "123456@qq.com", "adsfjtjbadokfahc"); // adsfjtjbadokfahc 为QQ smtp授权码,生成方式如图
            // 4、创建邮件
            Message message = createSimpleMail(session);
            // 5、发送邮件
            ts.sendMessage(message, message.getAllRecipients());
            ts.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } // 这一步报空指针
    }

    public static MimeMessage createSimpleMail(Session session) throws Exception {
        // 创建邮件对象
        MimeMessage message = new MimeMessage(session);
        // 指明邮件的发件人
        message.setFrom(new InternetAddress("1611826890@qq.com"));
        // 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("3285687940@qq.com"));
        // 邮件的标题
        message.setSubject("只包含文本的简单邮件");
        // 邮件的文本内容
        message.setContent("你好啊!", "text/html;charset=UTF-8");
        // 返回创建好的邮件对象
        return message;
    }

获取授权码

测试效果

0
weixin_42464028
weixin_42464028 javax.mail.NoSuchProviderException: java.lang.NullPointerException at javax.mail.Session.getTransport(Session.java:298)
8 个月之前 回复
weixin_42464028
weixin_42464028 我在 // 2、通过session得到transport对象 Transport ts = session.getTransport(); 这一步就报错了
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
第四讲:使用Transport类发送邮件(1)
第四讲:使用Transport类发送邮件
第四讲:使用Transport类发送邮件(2)
第四讲:使用Transport类发送邮件(2)
javamail发送html邮件问题,(按网上的例子做时,出现的问题)
我在用javamail发送邮件时,上网查了很多,也照做出来,在main中运行,一切都好,但是一旦集成到web应用程序中就会出现问题: 1、主题没有了 2、想要做成html格式,但是却不行,我截取了一段代码: [code]Session mailSession = Session.getInstance(pro, pop); MimeMessage msg = new MimeM...
java发送邮件详细参数解析总结(一)
1.介绍: Java Mail API的开发是SUN为Java开发者提供公用API框架的持续努力的良好例证。提倡公用框架,反对受限于供应商的解决方案,充分预示着一个日益开放的开发环境的建立。   Java Mail API的结构本身证明了它的开发者的基本目标之一--软件开发的工作量应该取决于应用程序本身的复杂程度以及开发者所要求的控制程度。换句话说,Java Mail API尽可能地保持简...
javamail实现用普通QQ邮箱发送邮件
本人最近在写一个Android项目,用户注册的时候想用邮箱验证的方式,于是就需要在服务器端发送电子邮件给新注册用户,邮件内容中包含一个 链接, 当用户点击这个链接将 登录到服务器 的验证逻辑。本人在网上找了很多代码,可能由于是很久以前的了,各大邮箱的规范 什么的都发生改变,所以总是出现一些问题。庆幸 的是,最后还是实现了。这是我用大号 发给小号 和另外一个 163 邮箱的 测试邮件 首先,发一个连
JAVA使用Transport类发送邮件
        使用Authenticator类的情况:当直接使用Transport的无参方法connect或者是Transport的静态方法直接发送邮件时,若服务器需要认证信息者则这两个方法都不能提供,因此要在创建Session对象时提供了Authenticator的认证信息,则就可以直接使用了。 通过使用Authenticator类的方式向邮件服务器提供认证信息可以按照以下步骤和思路进行编写...
使用javamail实现发送邮件(QQ邮箱和163邮箱)
今日研究了一下java发送邮件的程序,有两种方法,一种是用java.mail;一种是用commons-email。 一、JAVA Mail是很常用的用于发送邮件的包,我们可以从这里获取,或者在maven中添加如下配置: com.sun.mail javax.mail 1.5.5 示例代码如下:package cn.mail.test; import java.uti
使用eclipse发送邮件错误
邮件错误 之前在idea中发送邮件没有一点问题,无论是普通文本还是html内容的邮件,但是今天换成myeclipse就不行了,错误如图 网上搜索,发现出现这个错误的人居然很多。 首先我参考http://blog.csdn.net/conquer0715/article/details/44831851 其中说到有的jar没有包含sun的实现,只包含了api,这类jar名称通常为javax.
Spring框架之定时任务调度与邮件发送
一.Spring框架自带的task调度 实现一个小任务:每隔两秒在控制台输出一句Hello World ! task实现定时调度的方法有两种,一种为基于xml配置的方式,另一种是基于注解的方式: 1.基于xml配置实现task任务调度 首先创建一个idea的maven项目啦!实现类我放在src/main/java/com/jobs目录,配置文件spring-task.xml放在src/ma...
在java程序中实现发送邮件的功能
最近比较忙,在做一个人事管理系统的项目,在这项目需求中,需要一个发送邮件的功能。这个时候我们可以使用javamail的jar包来实现完美需要的功能,在这里简单的分享一个最基础的发邮件功能。 首先我们需要去下载两个jar包,smtp.jar和mailapi.jar,导入到自己的项目中应该就不用我说了吧,大家都是有经验的开发人员了。 public class Demo1 { pub
java实现了发送邮件功能
java实现了发送邮件功能,java实现了发送邮件功能java实现了发送邮件功能,java实现了发送邮件功能
邮件原理与JavaMail开发(二)——使用JavaMail创建邮件和发送邮件
在上一篇文章中我们就已经讲解过RFC822文档规范了,但讲解的不够仔细,所以我们该全面而细致地叙述该文档规范了,那这篇文章就以它作为开头展开吧! RFC882文档简单说明RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔。 邮件头包含的内容有: from字段:用于指明发件人 to字段:用于指明收件人 subject字
java使用mail.jar发送邮件
如何使用java自带的功能发送邮件? 由于个人使用的工具是 IntelliJ IDEA和QQ邮箱 所有下面的内容就围绕这两个工具来进行介绍。。 1.首先 你要在你的项目里面导入如下两个jar包。 然后 打开IDEA新建一个项目 此时发现,刚才导入的并无法向其他文件夹一样展开,这表明了没有对这个包添加项目依赖关系, 这个地方只选择文件夹就可以了 不需要选中jar文件 按照以上步骤 做完之后,...
java异步发送邮件
由于邮件服务器有时无法正常连接,所以采取异步操作,避免出现程序阻塞。/** * 异步方式发送邮件 * @param emailAddr * @param mailTitle * @param mailConcept * @param fileAttachment */ public static void sendMailByAsynchronous(final ReportInfo reportI
Java发送邮件的几种方式
最近的一个项目中用到了邮件发送,所以研究了一下。将其总结下来。 要发送邮件就要用到java中的JavaMail,关于JavaMailAPI的详解呢在 (http://blog.csdn.net/imain/article/details/1453677“)中有非常详尽的介绍,我就直接上代码了。 1:使用JavaMail发送邮件 // 1.创建一个程序与邮件服务器会话对象 Sessio...
Java实现定时发送邮件功能
定时发送邮件 发送邮件在很多场景下都可以被使用到,例如:项目报错,将异常信息及时发送给开发人员;将服务器运行状态及时发送给运维人员;注册成功发送邮件给用户等等。这些都是为了及时将信息反馈给相关人员,以便知道详情。 在这里是结合线程发送邮件,首先先创建发送邮件工具类: import java.util.ArrayList; import java.util.Iterator; import...
Linux学习-->如何通过Shell脚本实现发送邮件通知功能?
1、安装和配置sendmail不需要注册公网域名和MX记录(不需要架设公网邮件服务器),通过Linux系统自带的mail命令即可对公网邮箱发送邮件。不过mail命令是依赖sendmail的,所以我们需要先检查安装和配置sendmail。一般系统都自带sendmail,但是只能给内网的邮箱发邮件。如果想给公网的邮箱发邮件(比如qq邮箱)就需要配置sendmail.这里记录sendmail的安装启动配置
基于SMTP协议的邮件发送功能JavaEE实现
本博客介绍基于SSM框架(Spring4.0+SpringMVC+Mybatis)组合的Javamail应用,邮箱的话基于腾讯的QQ邮箱,其实也是Foxmail邮箱先要了解一下SMTP协议和SSL加密 SMTP:称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。SMTP是一种请求响应的协议,也就是客户机向远程服务器发送请求,服
Java Mail 发送邮件之——简单实现
Java Mail发送邮件简单示例,包括准备条件和核心代码,尽可能简单的描述清除。
javaweb 发送邮件代码
最近在做毕业设计管理系统的时候在实现新增用户时为了给新增加用户发送通知用到了发送邮件的功能,由于使用了QQ邮箱且以前的java邮箱框架版本为1.3.1算是较老了,所以遇到了不少坑,现将正确的javaweb邮箱代码记录于此以日后使用。package com.cuit.bsm.pub;import java.io.File;import java.io.IOException;import java....
使用javamail发送验证邮件
一般我们注册账号时,网站通常会要求我们填写一个邮箱地址,随后发送一封验证邮件到该邮箱,我们点击邮件里的验证链接(或者填写发送的验证码)就可以完成注册。 这个功能可以通过javamail实现. 首先原材料:下载javamail的jar包,一般为javax.mail.jar之类的.                      下载jaf的包,一般为activation,jar之类的. 将两个包添
redis的简单使用 异步发送邮件
你是否也困在redis,知其然不知其所以然~~ 项目中,到底怎么用?? 一个简单的实例,使用消息队列实现下yii异步发送邮件 redis~~准备工作: 首先得配置redis服务,之前写过相关的文章,可以参考下这里 https://segmentfault.com/a/11... yii的redis操作库:https://github.com/yiisoft/yi... 使用
一个javaMail.jar实现邮件发送
写这篇文章是基于目前我在做的一个项目中的一个需求,邮件催交功能。首先需要下载一个javaMail.jar ,或者是maven依赖,或者是gradle的依赖。我用的是gradle的依赖方式加载jar。不过还是要下载一下jar包。dependencies{//邮件催交需要的jar compile files('E:\\ideaWorkspace\\jxls_template\\javaMail\\ja...
javaweb 统计网站访问量时出现null和数据不增加等问题
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext application = this.getServletContext(); Integer count = (Int...
利用java编写发送邮件
最近项目需要添加一个发送邮件的功能,参考了网上了一个例子,代码如下: import java.security.GeneralSecurityException; import java.util.Properties;import javax.mail.Authenticator; import javax.mail.MessagingException; import javax.mail.Pa
javamail发送邮件乱码问题解决
<br />关于使用javamail包发送邮件时编码的解决问题:<br />1. 在发送正文时指定正文编码:<br />    在发送邮件时使用<br />    MimeBodyPart  body = new MimeBodyPart();<br />    body.setContent(content, "text/html;charset=GB2312");<br />    注意此时的content编码必须是所指定的编码格式。<br />2.  在设置邮件标题时也要指定标题的编码:<br /> 
使用quartz和JavaMail发送定时邮件
quartz定时调度和JavaMail自带的发邮件  就可以定时发送邮件了 1)首先导入quartz和JavaMail所需的jar包 (因为我使用的时maven 所以直接在porm文件中添加就可以了)                &amp;lt;!--引入Quartz的依赖 --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.quartz-schedule...
在web项目中使用线程池发送邮件实例
在普通的web应用中,发送邮件应该只能算小任务,而使用jms来发送邮件有点杀鸡用牛刀的味道,那么如果能建立一个线程池来管理这些小线程并重复使用他们,应该来说是一个简单有效的方案,我们可以使用concurrent包中的Executors来建立线程池,Executors是一个工厂,也是一个工具类,我把它的api的介绍简单的翻译了一下(如果翻译有误请大家不要吝啬手中的砖头) /** * 由sp
java 实现邮件的发送, 抄送及多附件
import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.*; import java.io.UnsupportedEncodingException; import java.util.Properties...
JavaMail常见问题之发送邮件问题--转
阅读邮件——IMAP 问. 我尝试在 IMAP 服务器上运行演示程序,但我得到了错误。答:首 先检查在 IMAP 服务器上确实有一个电子邮件账户。与系统管理员协商有关它的事情。通过在代码中调用 session 对象上的 setDebug(true) 方法来打开调试模式。这将造成在屏幕上转储 IMAP 协议跟踪。把这个跟踪发送给我们。对于说明问题,这个跟踪是非常有用的。如果可以的话,请将有关你的...
Spring的JavaMail实现异步发送邮件
具体背景就不说了,可以网上搜索相关知识,或者直接看Sping MailSender的官坊网页。这里就直接实战了(Java实现异步发送电子邮件,包含中文无乱码)。 Maven: dependency> groupId>com.sun.mailgroupId> artifactId>javax.mailartifactId> version>1.
最新javamail 使用方案,可以异步发送邮件
*第一步:工程中添加javamail需要的两个jar 地址:可以再sun官方网上去下载。 list:mail.jar、activation.jar*第二步:写发邮件的属性文件,本人不喜欢硬编码的方式coding。mail.properties文件如下:mail.transport.protocol=smtpmail.host=smtp.gmail.commail.smt
log4j实现发送邮件功能
引言 最近预上线的一个机器人项目,因为这个项目中有很多的AI的东西,整个项目分为三部分组成,web工程——FS——NLU,整个web工程都是由我来负责,后面两部分有大数据部门的东西负责,因为后面这两部分对于我们贷后行业来说都是比较超前的,所以在整个连调的过程中会有很多的异常的情况,但是很多的时候都是后面两部分的原因,但是每次都需要我去查看日志,之前我通logstash将日志收集到了es中,但是我...
java实现邮件发送功能
一个简单的小例子实现邮件发送 如下图: 输入要发送的邮件地址以及发送的邮件内容,点击按钮,发送邮件,完成即可跳到如下页面: 项目结构 如图: 详细代码介绍 1.按照项目结构建立项目并新建文件 2.导入发送邮件所需要的jar包 3.index.jsp页面部分代码如下: 请输入要发送的邮件地址: 请输入要发送的邮件内容:
Java中的null究竟是什么?
让我们从下面的声明开始吧:String x = null;上面的声明到底做了什么?回忆一下,什么是变量,什么是值?通常吧变量比作一个箱子,就像你可以用箱子装一些东西那样,您可以用变量来保持一个值。当声明一个变量的时候,我们需要设置变量的类型。 Java中有两种主要的类型:基本数据类型和引用类型。变量就可以声明为基本数据类型也可以声明为引用类型。在这种情况下,初始化声明声明了一个变量”X”,“X”
java实现 mail发送文本邮件、Html文件及带附件邮件源代码
import java.util.Properties;    public class MailInfo {      private String mailServerHost;// 服务器ip      private String mailServerPort;// 端口      private String fromAddress;// 发送者的邮件地址      private St...
JavaWeb项目ssm框架实现简易邮件的发送
下面我们直接进入正文,最近项目中使用到了发送邮件的功能,那我们直接看一下如何实现: 首先看一下效果图: 然后看一下邮箱中的效果: 首先配置一下我们maven项目中的pom.xml文件,引入相关的依赖: &amp;lt;!-- 添加邮件发送的依赖 --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/group...
JavaMail定时发送邮件
本文中用到的是163邮箱给qq邮箱发送邮件,没有毛病,其它邮箱未做测试
Java发送邮件找回密码功能的实现
发送邮件功能找回密码的功能几乎是所有的项目所必备的功能,目前最流行的方式之一便是通过发送邮件的方式,发送给用户修改密码的链接,用户通过登录邮箱找到链接地址,从而完成密码的重置。这样的方式相对来说比较安全可靠。这种方式的第一步便是发送邮件。
java实现调用邮件接口发送邮件--学习笔记
前文:最近学习了利用java发送邮件相关知识,怕忘记,所以笔记之。 一:在Maven环境下,pom配置 jar包依赖 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;javax.mail&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;mail&amp;lt;/artifactId&amp;gt; ...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 为什么学习java 学习java为什么