谁做过Java weblinux服务器发送邮件件!

找不到答案?
javaWeb发送邮件失败
一模一样的项目工程放在腾讯服务器就能发送邮件。之前问过客服是被限制了。然后我有改成阿里云的邮箱服务器还是失败。然后又试了换个端口,还是失败。我都快要疯掉了!求救啊!!!!
按投票排序
按时间排序
题主您好,
个人觉得可能默认与外网的25端口通讯,是失败的。
但您指到更改为465端口也失败,估计前提条件之一,是您的javamail组件是否支持安全的邮件连接(smtps)。
我遇到和你一样的问题, 一样没解决。
我观察smtp.aliyun.com的25 端口是没有打开的 [root@xx ~]# telnet smtp.aliyun.com 25Trying 140.205.94.10...
但是我本机执行
telnet smtp.aliyun.com 25 是ok的,
另外, 阿里云上执行:telnet smtp.aliyun.com
465Trying 140.205.94.10...Connected to smtp.aliyun.com.
可见 465 可行, 但是, 怎么java发送邮件设置端口呢?
25 端口被屏蔽了, 465 端口才可以, 也就是tls 加密协议才可以! 需要代码联系我
登录后可回答问题,请
是一款简单高效的电子邮件发送服务,它构建在可靠稳定的阿里云基础之上,帮助您快速、精准地实现事务邮件、通知邮件和批...
全球畅游,绿色可靠,办公协同好帮手
一站式提供企业即时通讯、销售管理、协同办公。
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...java web怎样实现在自己做的系统中邮件发送或者通信_百度知道
java web怎样实现在自己做的系统中邮件发送或者通信
我有更好的答案
如果是做普通的收发消息,就做个简单的查库那种就可以了如果要做mail,要有个mail服务器,然后利用SMTP和POP3协议进行收发操作如果是即时通信 可以在页面里潜入socket程序,也可以做实时动态刷新那种,ajax
采纳率:51%
为您推荐:
其他类似问题
您可能关注的内容
java的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后台自动发送邮件的程序(Java Mail,WEB版)
我的图书馆
后台自动发送邮件的程序(Java Mail,WEB版)
web.xml文件
&?xml version="1.0" encoding="UTF-8"?&&!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" ""&&web-app&& &servlet&&&& &servlet-name&mailsenderservlet&/servlet-name&&!--邮件发送程序--&&&& &servlet-class&com.email.MailSenderServlet&/servlet-class&&&& &init-param&&&&&& &param-name&server&/param-name&&!--邮件服务器SMTP地址--&&&&&& &param-value&smtp.163.com&/param-value&&&& &/init-param&&&& &init-param&&&&&& &param-name&port&/param-name&&!--邮件服务器SMTP端口--&&&&&& &param-value&25&/param-value&&&& &/init-param&&&& &init-param&&&&&& &param-name&address&/param-name&&!--邮件地址--&&&&&& &param-value&&/param-value&&&& &/init-param&&&& &init-param&&&&&& &param-name&username&/param-name&&!--邮件账号--&&&&&& &param-value&username&/param-value&&&& &/init-param&&&& &init-param&&&&&& &param-name&password&/param-name&&!--密码--&&&&&& &param-value&******&/param-value&&&& &/init-param&&&& &init-param&&&&&& &param-name&validate&/param-name&&!--SMTP服务器是否要求验证--&&&&&& &param-value&true&/param-value&&&& &/init-param&&&& &init-param&&&&&& &param-name&time&/param-name&&!--扫描数据库时间间隔(分钟)--&&&&&& &param-value&5&/param-value&&&& &/init-param&&&& &load-on-startup&1&/load-on-startup&& &/servlet&&/web-app&
package com.
import javax.servlet.*;import javax.servlet.http.*;import java.io.*;
public class MailSenderServlet&&& extends HttpServlet {& private MailS& private T
& public void init() throws ServletException {&&& sender = new MailSender();&&& sender.setRoot(root);&&& String server = getInitParameter("server");&&& String port = getInitParameter("port");&&& String address = getInitParameter("address");&&& String username = getInitParameter("username");&&& String password = getInitParameter("password");&&& if (server == null || port == null || address == null || username == null ||&&&&&&& password == null) {&&&&& System.out.println("系统文件web.xml错误:邮件发送程序初始化失败!");&&&&&&&& }&&& sender.setServer(server);&&& sender.setPort(port);&&& sender.setAddress(address);&&& sender.setUsername(username);&&& sender.setPassword(password);
&&& String time = getInitParameter("time");&&& if (time != null) {&&&&& sender.setTime(Integer.parseInt(time));&&& }&&& String validate = getInitParameter("validate");&&& if (validate != null) {&&&&& sender.setValidate(Boolean.valueOf(validate).booleanValue());&&& }&&& t = new Thread(sender);&&& t.start(); //启动邮件发送线程& }
& public void destroy() {&&& sender.stop(); //停止邮件发送线程&&& try {&&&&& t.join(1000);&&&&& if (t.isAlive()) {&&&&&&& System.out.println("邮件发送线程未停止。");&&&&& }&&& }&&& catch (Exception e) {}& }
邮件发送程序
package com.
import java.io.*;import java.sql.*;import java.util.*;import java.util.Dimport javax.activation.*;import javax.mail.*;import javax.mail.Message.*;import javax.mail.internet.*;
/**&* &p&Copyright: Copyright (c) 2004&/p&&* @author &* @version 1.0&*/
public class MailSender&&& implements Runnable {& private int time = 5 * 60 * 1000; //扫描数据库时间间隔& private boolean flag = //停止线程标记& private String server = "127.0.0.1"; //SMTP服务器地址& private String port = "25"; //SMTP服务器端口& private S //用于发送EMAIL的发送者地址& private S //发送者的用户名& private S //发送者的密码& private boolean validate = //邮件服务器是否要求验证& private File root = //WEB根目录& MailConfigManager manager = MailConfigManager.getInstance();
& public MailSender() {& }
& public void setAddress(String address) {&&& this.address =& }
& public void setPassword(String password) {&&& this.password =& }
& public void setPort(String port) {&&& if (port != null && port.length() & 0) {&&&&& this.port =&&& }& }
& public void setServer(String server) {&&& this.server =& }
& public void setUsername(String username) {&&& this.username =& }
& public void setValidate(boolean validate) {&&& this.validate =& }
& public void setTime(int minute) {&&& this.time = minute * 60 * 1000;& }
& public void run() {&&& long lastTime = new Date().getTime(); //保存前一次发送邮件的时间&&& while (flag) { //服务器停止时退出线程&&&&& long k = new Date().getTime() - lastT&&&&& if (k & -1000) { //防止系统修改时间&&&&&&& lastTime = new Date().getTime();&&&&&&&&&&&& }&&&&& if (k & time) { //超过设定时间间隔开始发送邮件&&&&&&& sendData();&&&&&&& lastTime = new Date().getTime();&&&&& }&&&&& try {&&&&&&& Thread.sleep(100);&&&&& }&&&&& catch (Exception e) {}&&& }& }
& public void stop() {&&& flag =& }
& /**&& * 检索数据库,并发送邮件&& */& private void sendData() {&&& ResultSet rs=//读取数据库数据&&& &&& try {&&&&& Session session = Session.getInstance(getProperties(), new Authentic());&&&&& while(flag) {//服务器停止时退出线程&&&&&&& String toAddress =//发送地址(从rs中得到)&&&&&&& String subject =//邮件主题&&&&&&& String content =//邮件内容&&&&&&& String file[] =//所有附件(绝对路径)&&&&&&&&& &&&&&&& sendMail(session, toAddress, subject, content, file);//发送邮件&&&&& }&&& }&&& catch (Exception e) {&&&&& e.printStackTrace();&&& }&&& finally {&&&&& if(rs!=null){&&&&&&& try{&&&&&&&&& rs.close();&&&&&&& }&&&&&&& catch(SQLException e){}&&&&& }&&& }& }
& /**&& * 发送邮件&& * @param session 会话&& * @param toAddress 目的地址&& * @param subject 邮件主题&& * @param content 邮件内容(HTML)&& * @param files 邮件附件&& * @return 是否发送成功&& */& private boolean sendMail(Session session, String toAddress, String subject,&&&&&&&&&&&&&&&&&&&&&&&&&& String content, String[] files) {
&&& toAddress = "";
&&& try {&&&&& Message rs = new MimeMessage(session);
&&&&& Address from = new InternetAddress(address);&&&&& rs.setFrom(from); //发送地址&&&&& rs.setRecipient(RecipientType.TO, new InternetAddress(toAddress)); //接收地址&&&&& rs.setSubject(subject); //邮件主题&&&&& Multipart mp = new MimeMultipart();&&&&& BodyPart html = new MimeBodyPart();&&&&& html.setContent(content, "text/ charset=GBK"); //邮件HTML内容&&&&& mp.addBodyPart(html);&&&&& if (files != null && files.length & 0) { //邮件附件&&&&&&& for (int i = 0; i & files. i++) {&&&&&&&&& MimeBodyPart mbp = new MimeBodyPart();&&&&&&&&& FileDataSource fds = new FileDataSource(files[i]);&&&&&&&&& mbp.setDataHandler(new DataHandler(fds));&&&&&&&&& mbp.setFileName(MimeUtility.encodeWord(files[i]), "GBK", null));&&&&&&&&& mp.addBodyPart(mbp);&&&&&&& }&&&&& }&&&&& rs.setContent(mp); //邮件全部内容&&&&& rs.setSentDate(new Date()); //发送时间&&&&& Transport.send(rs); //发送&&&&&&&& }&&& catch (Exception e) {&&&&& e.printStackTrace();&&&&&&&& }& }
& /**&& * 邮件会话属性&& * @return 会话属性&& */& private Properties getProperties() {&&& Properties rs = new Properties();&&& rs.put("mail.smtp.host", server);&&& rs.put("mail.smtp.port", port);&&& rs.put("mail.smtp.auth", validate ? "true" : "false");&&&& }
& public void setRoot(File root) {&&& this.root =& }
& class Authentic&&&&& extends Authenticator { //验证密码
&&& public Authentic() {&&& }
&&& public PasswordAuthentication getPasswordAuthentication() {&&&&& return new PasswordAuthentication(username, password);&&& }
TA的推荐TA的最新馆藏[转]&[转]&[转]&
喜欢该文的人也喜欢java-web项目-怎么获取邮件服务器上所有用户的邮件
[问题点数:20分]
java-web项目-怎么获取邮件服务器上所有用户的邮件
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|阅读——IMAP 问. 我尝试在 IMAP 上运行演示程序,但我得到了错误。答:首 先检查在 IMAP 服务器上确实有一个电子邮件账户。与管理员协商有关它的事情。通过在代码中调用 session 对象上的 setDebug(true) 方法来打开调试模式。这将造成在屏幕上转储 IMAP 协议跟踪。把这个跟踪发送给我们。对于说明问题,这个跟踪是非常有用的。如果可以的话,请将有关你的 IMAP 服务器的供应商信息发送给我们。问. 当我提取带有较大附件的消息时,IMAP 提供程序似乎丢失了数据。答:这是由于在 IMAP 服务器的部分提取实现中有 bug。为了解决这个服务器 bug,请将“mail.imap.partialfetch”属性设置为 false。参考 Mail 包的 NOTES.txt,获取进一步信息。问. IMAP 提供程序是否缓存检索的数据?答:只有在必要的时候,IMAP 提供程序才从服务器上提取消息的数据(javax.mail.FetchProfile 可用于这一点)。一旦提取了标题和 bodystructure(主体结构)信息,它就总是缓存在 Message 对象中。不过,没有缓存bodypart(主体部分)的内容。因此每次客户端请求内容时(使用 getContent() 或使用 getInputStream()),就会向服务器发出一个新的 FETCH 请求。这是由于消息的内容可能比较大,因此如果缓存了大量消息的这些内容,就可能导致系统很快用完,因为垃圾收集器不能释放被引用的对象。客户端应该到这一点,而且如果需要的话,自己维持检索的内容。问. 我想在文件夹间移动消息。我应该使用 appendMessages() 或 copyMessages() 吗?答:在下面的这种情况下,使用 copyMessages()——要复制或移动的消息属于某个文件夹,而该方法就是在这个文件夹中被调用的。这是因为一些实现可以优化这个操作,前提是源和目标文件夹属于相同的后端 Store(存储)。否则使用 appendMessages()。 问. 有时检索大消息主体似乎是低效的。答:如果你正在使用 Sun IMAP 提供程序,就可以试着增加 mail.imap.fetchsize 属性(当前默认值是 16K)。这将导致从服务器提取的数据是一些较大的块区。注意,当你这样做时,要冒这样的危险——JVM 可能用完内存。问. 当加载这种大二进制附件时,我得到了 OutOfMemory 错误。 答:在启动时增大最大 JVM 堆大小。如果使用来自 Sun 的 JVM,那就使用“-mx”选项。不要保持不使用消息“内容”的引用。在某些情形下,可以尽量将消息内容作为原始字节进行流转化(使用 getInputStream()),使用它们,然后丢弃已使用的数据块区。 问. 当在主体部分 (bodypart) 上调用 getContent() 时,我为什么会得到 UnsupportedDataTypeException?答:getContent() 方法返回一个 Java 对象,它代表 bodypart(主体部分)内容。为了让它工作,必须注册对应内容的
类型的 JAF DataContentHandler。否则将引发 UnsupportedDataTypeException。在这种情形下,可以使用 getInputStream() 方法来将内容作为字节流检索。参阅 JAF 文档,获取有关如何创建和注册自己的 DataContentHandlers 的细节。 问. 当在包含文本数据的主体部分 (bodypart) 上调用 getContent() 时,为什么会得到 UnsupportedEncodingException?答:当使用 getContent() 时, 文本主体部分(例如主类型是“text”的主体部分)返回 Unicode 字符串对象。通常,这些主体部分内部用某些非 Unicode 字符集保持文本数据。(通过 "text/plain" DataContentHandler)试着将那些数据转换成 Unicode 字符串。基础 JDK 的字符集可用于做这种工作。如果 JDK 不支持特别的字符集,那么就引发 UnsupportedEncodingException。在这种情况下,可以使用 getInputStream() 方法来将内容作为字节流检索。下面是一个例子:
Sif (part.isMimeType("text/plain")) {try {s = part.getContent();} catch (UnsupportedEncodingException uex) {InputStream is = part.getInputStream();/*
* Read the input stream into a byte array.
* Choose a charset in some heuristic manner, use
* that charset in the java.lang.String constructor
* to convert the byte array into a String.
*/s = convert_to_string(is);} catch (Exception ex) {// Handle other exceptions appropriately}}
发送邮件——SMTP 问. 我如何回复消息?答:为了回复消息,请使用 Message 对象上的 reply 方法。这个方法将返回一个新的对象,对象中的标题已经针对回复做了恰当设置。你将需要自己提供消息的内容。问. 我如何转发消息?答:用于转发消息的方法取决于你要怎样表示要转发的消息。简单的办法是创建一个新的 MimeMessage,并适当地为它提供地址,然后将现有的消息作为附件放在新消息中。为了将原始消息放在新消息中,比如可以使用下面的代码: MimeBodyPart mbp = new MimeBodyPart();mbp.setContent(forwardedMsg, "message/rfc822");mp.addPart(mbp);但是如果你想创建新的消息,并在新消息中包括原始消息的文本,可能也要用 "& " 来缩进,那将需要提取原始消息主体中的数据,并进行相应的处理。你可能也想取得原始消息的其他附件,并将它们添加到新消息中。问. 我如何发送 HTML 邮件?答:在分发中包括了大量演示程序,它们展示了如何发送 HTML 邮件。如果想发送简单消息,它具有 HTML 而不是纯文本,那请参见 demo(演示)目录中的 sendhtml.java 程序。如果想将 HTML 文件作为附件发送,请参见 sendfile.java 示例,它展示了如何将任何文件作为附件发送。问. 我如何发送具有不同字体和颜色的格式化文本的邮件?答:最简单的办法是使用 HTML 文本发送消息。参见 。 问. 我如何发送具有纯文本和 HTML 文本的邮件,让每个邮件的阅读者可以选择适合它的格式?答:你想要发送 MIME multipart/alternative 消息。你构造了这样的一条消息,构造方式基本上与构造 multipart/mixed 消息相同,它使用了 MimeMultipart 对象,而该对象又是使用 new MimeMultipart("alternative") 来构造的。然后在 multipart(多部分)中,把 text/plain 主体部分作为第一部分插入,并且把 text/html 作为第二部分插入。参阅 ,获取这一消息的结构的细节。问. 我如何发送包含图像的 HTML 邮件?答:最简单的办法是发送带有图像标签的 HTML 文本,标签引用了公共
站点。在这种方法中,在消息中并没有真正包括图像,因此当用户阅读消息时,如果没有连接到 Internet,那将不能看到图像。另外,你也可以构造 MIME multipart/related 消息。参阅 ,获取这种消息结构的细节。问. Transport 方法 send 和 sendMessage 之间有什么区别?答:send() 方法是一个静态方法,可以直接使用,而不需要 Transport 对象的实例。它用于常见、简单的场合,比如使用默认传输发送单条消息。从内部讲,send() 方法首先调用消息上的 saveChanges() 方法。然后创建合适的新 Transport 对象,调用 Transport 的 connect() 方法,调用 Transport 的 sendMessage() 方法来实际发送消息,接着调用 Transport 的 close() 方法,最后丢弃 Transport 对象的新实例,并由垃圾收集器收集(实际上,还有比那更加复杂的,但那是一般的想法)。如你可以看到,静态 send() 便利 (convenience) 方法是建立在更加通用的每实例 sendMessage() 方法的基础上的。有许多原因可以让应用程序直接使用 sendMessage() 方法。最常见的原因是为了通过在单个连接期间发送多条消息 来提高,或者为了手动管理连接以提供验证信息。当使用 sendMessage() 方法时,产生的最常见错误是,忘记在要发送的消息上调用 saveChanges() 方法。问. 我需要验证到 SMTP 服务器,因此我调用了 trans.connect(host, user, password),然后调用 trans.send(msg) 发送消息,但它却不能工作。答:你应该调用 msg.saveChanges(),然后调用 trans.sendMessage(msg, addrs) 来发送消息。如
所描述,send 方法是一个静态便利方法,它会获得自己的 Transport 对象,并创建自己的连接用于发送消息;它没有使用与某些 Transport 对象有关的连接,并且它是通过该 Transport 对象得到调用的。当然不要忘记将 mail.smtp.auth 属性设置为 true 来启用 SMTP 验证!问. 我修改了一条消息,但标题却没有反映修改。答:在创建新消息或修改现有消息后,应该调用 saveChanges()。这将导致重新设置标题以反映变更。注意,Transport.send(Message) 方法隐式调用了这个方法。因此如果你正在做的是发送已修改的消息,就可以跳过调用 saveChanges()。saveChanges() 可能是一个昂贵的操作(特别是对于较大或深度嵌套的消息),因此只在需要时才调用它。问. 我正在使用 sendMessage() 方法发送消息,但在消息中的文本前后却出现奇怪的一些行,并且我的附件也在消息体中出现。 答:通常这些行像下面这样:--.JavaMail.name@host像
那样,在创建新消息后,在使用 Transport.sendMessage() 方法发送消息之前,必须调用 saveChanges() 方法。静态 Transport.send() 方法将自动调用 Message.saveChanges() 方法。问. 我为新消息的 Message-ID 标题设置了特定值。但当我发送这条消息时,却重写了那个标题。答:saveChanges() 将为 Message-ID 字段设置新值,重写所设置的任何值。如果需要设置自己的 Message-ID 并保留它,就必须创建自己的 MimeMessage 子类,重写 updateHeaders() 方法,并使用这个子类的一个实例。
class MyMessage extends MimeMessage {...protected void updateHeaders() throws MessagingException {super.updateHeaders();setHeader("Message-ID", "my-message-id");}...}
问. 当发送创建的新消息时,为什么会得到 UnsupportedDataTypeException?答:你可能使用 setContent(Object o, String type) 方法设置了消息的一些内容。为了让它能工作,必须为指定“类型”注册 JAF DataContentHandler。如果不这样做,将获得 UnsupportedDataTypeException。参阅 ,获取进一步信息。问. 当发送消息时,如何能够显式地设置 SMTP FROM: 属性?答:mail.smtp.from 属性可用于设置 SMTP FROM: 属性。如果没有设置这个属性,就使用消息的 From 属性。如果多个线程需要同时发送邮件,并且每个线程需要设置 From 属性,那么每个线程就必须使用自己的 Session 对象,它具有自己的 Properties 对象。然后可以在每个 Session 对象的 各个 Properties 对象上独立设置 mail.smtp.from 属性(同样对每个线程做这样的设置)。问. 我想重复发送消息,并且每次发送给一组不同的收件人。但调用 Transport.send(Message) 却导致每次都创建一个新的 Transport 会话。在本例中,这是一个次优办法,我如何来解决它?答:创建合适的 Transport 对象的实例,然后连上它并重复调用 sendMessage() 方法,例如:
MimeMessage msg = ...;// construct messagemsg.saveChanges();Transport t = session.getTransport("smtp");t.connect();for (int i = 0; .....) {t.sendMessage(msg, new Address[] { recipients });}t.close();
问. 当试图发送消息时,我得到了 “MessagingException: 501 HELO requires domain address”(MessagingException: 501 HELO 要求域地址)。答:在 SMTP HELO 命令中,SMTP 提供程序使用 InetAddress.getLocalHost().getHostName() 的结果。如果那个调用不能返回任何数据,就不会在 HELO 命令中发送任何名称。检查你的 JDK 和名称服务器配置,确保那个调用返回正确数据。从 JavaMail 1.1.3 开始,你也可以设置 mail.smtp.localhost 属性,并可以把设置为想用于 HELO 命令的名称。问. 如果将消息发送到错误的地址,为什么我会获得 SendFailedException 或 TransportEvent,指出地址是错误的?答:在 Internet 上没有端到端验证。通常要将消息转发到几个邮件服务器,然后才到达特定的邮件服务器,该服务器决定了它是否可以传送消息。如果在这些后面的步骤中的某个步 骤发生了错误,那么通常会将消息作为不可传送返回给发件人。一个成功的“发送”只表明邮件服务器已经接受了消息,并将试着传送它。问. 当消息不能被传送时,就会返回一个失败消息。我如何检测这些“回弹”消息?答:虽然有一个 Internet 标准用于报告这样的错误(multipart/report MIME 类型,参阅 ),但还没有广泛实现它。 深入讨论了这个问题,包括了大量的例子。在 Internet 电子邮件中,特定的邮箱或用户名是否存在,只能由传送消息的最终服务器决定。消息可能通过几个中继服务器(它们不能检测错误),然后再到达最终服务器。通 常,当最终服务器检测到这一错误,它会返回一个消息给原始消息的发送人,指出失败的原因。有许多 Internet 标准讨论了这种传送状态通知 (Delivery Status Notifications),但大量服务器不支持这些新标准,相反使用特别技术来返回这种错误消息。这使得将“回弹”消息与产生问题的原始消息相互关联 起来非常困难(注意,这个问题与 JavaMail 完全无关)。有许多技术和试探法用于处理这一问题,但它们都不是完美的。一种技术是 Variable Envelope Return Paths, 描述了这一技术。问. 当创建 InternetAddress 对象时,如果地址是非法的,为什么不会获得异常?答:InternetAddress 类只检查地址的语法。如
所讨论,InternetAddress 类不能决定地址是否做为合法地址实际存在。如果应用程序运行在防火墙背后或目前没有连接到 Internet,那么甚至不能验证主机名。问. 当试图发送消息时,我为什么会获得 javax.mail.SendFailedException: 550 Unable to relay for 我的地址?答:这 不是 JavaMail 的问题。这是来自你的 SMTP 邮件服务器的错误回复。它指出没有配置你的邮件服务器,使得你可以通过它发送邮件。通常会配置组织的邮件服务器,使得组织中的邮件可以发送到组织中的其他 地址,或者发送到组织外部的地址。通常它也使得来自组织外部地址的邮件可以发送(或中继)到 也是组织外部的另一地址。邮件服务器的配置决定了是否允许这种中继,以及哪些地址应该当成内部地址与外部地址。问. 当试图发送消息到(例如)Yahoo时,为什么我会获得一个错误,指出“连接被拒绝”?答:你 试图连接的计算机很可能没有运行邮件服务器。如果你试图连接到 Web 邮件服务,比如 Yahoo,通常你就不能使用 Web 主机名(例如 "yahoo.com"),因为这台主机没有运行所要求的邮件服务器。相反,你需要知道运行所要求邮件服务器的主机的名称;联系你的 Web 邮件提供商获取这一信息。你可以从如下地址找到 Yahoo 的这一信息: 。 注意,有些 Web 邮件提供商没有提供这一服务,相反,只允许通过访问邮件。如果你没有试图连接到 Web 邮件账户,而是试图连接到本地中的一台主机,那很有可能是试图连接的主机没有运行邮件服务器。 有时如果忘记设置(比如)"mail.smtp.host" 属性,这种情况就发生了,它将导致你试图连接到“localhost”。大多数
计算机没有运行邮件服务器,不过,许多 UNIX(Solaris 和
等)计算机是运行它的。因此在 Windows 计算机上,试图连接到“localhost”通常会失败,并获得“连接被拒绝”。问. 当发送邮件时,为什么会失败,并得到一个异常,异常 中包括像“553 To send mail, first check your mail with a valid POP account”(553 为发送邮件,首先检查邮件具有合法的 POP 账户)这样的消息?答:为了防止它们用于发送垃圾邮件,一些邮件服务器会要 求使用有效的 POP3 账户,并要求要先登录那个账户,然后才可以让你通过邮件服务器发送邮件。在 JavaMail 中,这种处理是简单的。当你知道正在处理这样的邮件服务器时,确保连接到那台邮件服务器上的 POP3 Store,然后再发送邮件。POP3 问. 我可以从哪里找到 POP3 的支持?答:在 JavaMail 1.2 及以上版本中包括了 POP3 提供程序。POP3 提供程序也可从多个第三方提供商获得。请浏览我们的 ,获取进一步信息。问. 我想在 POP3 服务器上删除消息。我在这些消息上设置了 DELETED 标志。然后调用 expunge() 方法,但我得到了MethodNotSupportedException。当使用 Sun 的 POP3 提供程序时,我如何删除消息? 答:POP3 提供程序不支持 expunge() 方法。不过,可以关闭 expunge 标志设为 true 的文件夹。也就是调用 folder.close(true)。问. 在从 Sun POP3 提供程序获得的消息中,我如何可以检索 POP3 UIDL?答:对于 POP3 提供程序,这是可能的。参见 com.sun.mail.pop3 包文档,获取进一步信息。 问. 对于 POP3,我如何知道哪里消息是新的?答:POP3 协议不提供任何永久标志的支持,因此 RECENT 标志是没有用的。com.sun.mail.pop3 包文档讨论了几个策略,它们可用于处理这一问题。问. 当使用 POP3 时,为什么 hasNewMessages() 总是返回 false?答:POP3 协议没有提供办法来决定文件夹是否有新消息。问. 我创建了 MessageCountListener(如 monitor 程序中所展示的),但在我的 POP3 INBOX(收件箱)中,我从未得到通知。答:当 INBOX 打开时,POP3 协议不允许客户端查看传送到 INBOX 的新消息。应用程序必须关闭 INBOX,然后重新打开它, 才可以查看新消息。对于 POP3,使用 MessageCountListener ,你从不会得到新邮件的通知。参见 com.sun.mail.pop3 包文档(在 JavaMail 下载包的 docs/sundocs 目录),获取进一步信息。问. 当使用 POP3 时,为什么 getReceivedDate() 返回 null?答:POP3 协议不提供有关何时接收消息的信息。通过查看一些消息标题,比如 Received 标题,可能可以猜到接收日期,但这非常不可靠。问. 当使用 POP3 时,我得到了有关 SocketFetcher 类的抱怨。答:很 有可能在 CLASSPATH 中有多个版本的 pop3.jar 或 mail.jar。检查 CLASSPATH 的设置,如果你正在使用 JDK 1.2 或更新版本,检查 JDK 中的 "jre/lib/ext" 目录。确保你只有 JavaMail 1.2 mail.jar 可用并且没有 pop3.jar。只有对于较老版本的 JavaMail,pop3.jar 才是必要的。问. 当使用 POP3 时,我得到了有关 contentStream 字段的抱怨。 答:错误通常像下面这样:java.lang.NoSuchFieldError: contentStream atcom.sun.mail.pop3.POP3Message.getContentStream(POP3Message.java:115)像
一样,使用混合版本的 POP3 提供程序和 mail.jar。在包括 POP3 提供程序的较新版本 mail.jar 之前,你可能在 CLASSPATH 中有了较老版本。问. 除了 POP3 服务器上的 INBOX(收件箱)外,您如何访问或创建文件夹?答:不能。POP3 服务器只支持每个用户一个邮箱。大多数使用 POP3 的邮件阅读者也维护着本地消息存储,他们可以将传入的消息(来自 POP3 INBOX)复制到存储中,并允许你将消息写到其他文件夹。参见 ,获取有关本地存储提供程序的进一步消息。servlet 中的 JavaMail 问. 我可以在 servlet 中使用 JavaMail 吗?答:可以。参阅上面的“安装和配置”一节获取进一步信息。JavaMail
所要求的一部分。当在 J2EE 产品中使用 JavaMail,不需要任何的安装和配置,就这么简单! applet 中的 JavaMail 问. 我可以在 applet 中使用 JavaMail 吗?答:可以。JavaMail 1.3 可以在 applet 中工作,这些 applet 可运行于 Netscape 和 Internet Explorer。问. 在 applet 中,使用 JavaMail 的问题是什么?答:在 applet 中使用 JavaMail,它的一个最大问题是默认的 applet 安全限制。这些限制只允许 applet 连接到特定的主机,而该主机是从中下载它们的主机。因此,为了让这样的 applet 使用 JavaMail,邮件服务器将需要位于特定的计算机,该计算机与从中下载 applet 的 Web 服务器相同。问. OK,可能我确实不想使用 applet,那我应该怎么做?答:通常,我们推荐使用 servlet (或 )来收集邮件消息,并使用 JavaMail 来发送它。JavaMail 下载包中包括了演示 servlet,它例举了这种方法。Java Developer Connection 上的
例举了使用 JavaServer Pages 的另一种方法。
cmjcmj8080
浏览: 206759 次
来自: 北京
最后一种纯shell的方式貌似有问题,处理了后,tomcat不 ...
[size=xx-large][/size]asdfasdfa ...
[b][引用quote]
[img][/img][url][/ ...
jdbc配也可以
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 发送邮件服务器怎么填 的文章

 

随机推荐