`
ruvuoai
  • 浏览: 95682 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用javamail的一些问题

阅读更多

今天用javamail做了一个发送邮件的功能.遇到了一系列的问题.

1:在本地(windows环境)测试一切正常,上传到服务器(Linux环境)就出了问题.[java.lang.SecurityException: Access to default session denied ],也就是获得默认的session时无法获得.郁闷了N久,在网上搜了下,有朋友遇到同样的问题,但都没人给予解决方案,我在csdn,javaeye发帖也没人回.后来在又看了一朋友的blog,他写的解决办法是,把 mailSession = Session.getDefaultInstance(props,sa);改成mailSession = Session.getInstance(props,sa);就是新创建一个session,我试了下,可以解决问题.但还是找到为什么不能获取默认session的原因.而且担心这样没次都Session.getInstance(props,sa);会不会出问题.

2.发送email内容为html时,出现乱码.同样是在本地测试正常,传到服务器上就出问题.后来经过测试,发现是服务器默认编码的问题,服务器的默认编码UTF-8,我的email内容是本地一html文件,在读取文件内容时没有设置编码,所以读取出来的就已经是乱码了,.后来该成FileInputStream fis = new FileInputStream(filename);BufferedReader in = new BufferedReader(new InputStreamReader(fis,"GBK"));就OK了. InputStreamReader不指定编码方式的话将采用底层操作系统的默认编码方式,所以这里要在构造器重指定编码的方式.

3.static变量的问题.         我定义了一个静态类变量public static boolean isRunning = false;来判断状态,刚开始一切正常,但是在一次出了异常之后.就无法执行了,有让我郁闷了好大一会.后来才发现.是static的原因.(static变量属于类变量,在这个类的所有 new出来的对象中只存在一个该变量,每个对象是对同一变量进行操作,static的变量和初始化块仅仅运行一次。不象没有static的变量,每次new的时候,都会重新初始化。)因为static变量只初始化一次,之后使用的值都是之前的状态值.所以我的问题就出在当运行正常时,运行时会把状态改为true,结束后会把状态改为false.但是出现异常时,后面就没把状态改成false.所以下次执行时就无法往下执行了.

分享到:
评论

相关推荐

    使用JAVAMail代发邮件

    使用 JavaMail 代发邮件 使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件...

    linux服务器报警—使用javamail

    "Linux服务器报警—使用javamail"这个主题就涉及到了如何利用JavaMail API在Linux环境中实现自动发送邮件报警的功能。JavaMail是一个开源库,它允许开发者在Java应用中添加电子邮件功能,包括发送和接收邮件。 首先...

    javamail问题及解决方案

    在处理JavaMail的问题时,除了正确配置邮件服务器和身份验证信息之外,还有一些额外的优化建议: 1. **调试模式**:在开发阶段,可以开启调试模式以获取更详细的错误信息,有助于快速定位问题: ```java session...

    Android使用JavaMail后台发送邮件遇到的一些问题

    2. **JavaMail API与Android兼容性**:原生的JavaMail并不完全支持Android环境,因为它依赖于Java标准版(JSE)的一些类,而Android使用的是Java微型版(JME)。因此,需要使用Android兼容版本,如Apache的Android-...

    javamail使用的jar包

    以下是一些使用 JavaMail 的关键知识点: 1. **JavaMail Session**: 这是 JavaMail 的核心,用于配置邮件服务的属性,如主机名、端口号、用户名和密码。`Session.getInstance()` 方法用于创建一个 `Session` 实例。...

    使用javaMail发送邮件

    7. mailapi.jar:可能包含了JavaMail API的一些额外实现或扩展。 为了发送邮件,首先需要创建一个`Properties`对象,并设置SMTP服务器的相关属性,例如主机名和端口号: ```java Properties props = new ...

    JavaMail 内存溢出问题

    使用一些工具可以帮助识别和解决内存溢出问题,例如: 1. VisualVM:JDK 自带的性能分析工具,可以查看内存分配、垃圾回收等信息。 2. JProfiler:商业的 Java 性能分析工具,提供详细的内存分析功能。 3. MAT ...

    JavaMail-1.5 API

    使用JavaMail API可以编写出跨平台的邮件处理应用,而且由于Java的跨平台特性,使用JavaMail API开发的邮件应用可以部署在Windows、Linux、Unix、Mac OS等多种操作系统上。 文件中提到的“Evaluation Purposes”和...

    JavaMail+JAF+JavaMail_API+JavaMail_API详解

    JavaMail 是一个开源的Java库,它为Java程序员提供了处理电子邮件的...通过学习和使用这些资源,开发者可以熟练掌握如何使用JavaMail和JAF来实现复杂的邮件操作,例如发送带附件的邮件、处理邮件事件、读取IMAP邮箱等。

    Android使用JavaMail开发邮箱最新jar包集合

    本资源提供的"Android使用JavaMail开发邮箱最新jar包集合"包含了开发过程中所需的最新版本(1.6.0)的核心组件。 JavaMail API主要包括以下几个关键模块: 1. **javax.mail**:这是JavaMail的核心包,包含了发送和...

    javamail(带界面的javamail)

    对于邮件接收,JavaMail 使用 Store 和 Folder 类来连接邮件服务器并获取邮件。你可以选择 POP3 或 IMAP 协议,根据用户的需求,可以设置为只读或读写模式。Folder 对象代表邮件文件夹,如“收件箱”、“已发送”等...

    javamail使用demo示例

    这个"javamail使用demo示例"是JavaMail官方提供的一个实例集合,旨在帮助开发者更好地理解和应用JavaMail库。下面我们将深入探讨JavaMail的核心概念、主要功能以及如何使用这些示例代码。 一、JavaMail核心概念 1....

    javaMail学习(七)——使用javaMail发复杂邮件

    在使用 JavaMail 发送复杂邮件时,以下是一些关键知识点: 1. **配置 SMTP 服务器**:首先,我们需要设置 JavaMail Session 对象,指定 SMTP 服务器的属性,如主机名、端口号、用户名和密码。这通常通过 `...

    使用JavaMail实现发送邮件

    在提供的压缩包文件`Mail`中,可能包含了一些关于JavaMail的示例代码或者进一步的解释。通过学习这些内容,你可以更深入地理解JavaMail的工作原理,并能更好地应用到实际项目中。 总之,JavaMail是Java开发者用来...

    使用javaMail发邮件及收取邮箱未读邮件并标记为已读

    在这个提供的资源中,可能包含了一个简单的文档,详细解释了这些步骤,并可能提供了一些示例代码,帮助初学者快速理解和使用 JavaMail。通过实践这些示例,你可以更好地掌握如何在 Java 应用程序中集成邮件功能。 ...

    Android 使用javamail发送邮件

    由于Android本身并不直接支持JavaMail,所以通常需要通过一些额外的库,如Android JavaMail,这是一个专门为Android优化的JavaMail版本。 接下来,我们来探讨如何实现邮件的发送。首先,需要创建一个MailSession...

Global site tag (gtag.js) - Google Analytics