`
redleaf
  • 浏览: 127841 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

为什么用javamail向163发送邮件,每封信都带有一个附件的符号???

    博客分类:
  • JAVA
阅读更多
为什么用javamail向163发送邮件,每封信都带有一个附件的符号???
当你没有发送附件时,163也会显示一个大头针的符号,这表明有附件,可是打开这封信,信里是没有附件的,这是对的,现在我的问题就是,不管你有没有发送带附件的邮件,163都会显示一个大头针的符号 (就是有附件的符号),这个怎么解决,下面是我的代码,大家帮我看看哪写错了:

public HashMap send(){
		HashMap map=new HashMap();
		map.put("state", "success");
		String message="邮件发送成功!";
		Session session=null; 
		Properties props = System.getProperties(); 
		props.put("mail.smtp.host", smtpServer);
		if(ifAuth){ //服务器需要身份认证 
			props.put("mail.smtp.auth","true");    
			SmtpAuth smtpAuth=new SmtpAuth(username,password);
			session=Session.getDefaultInstance(props, smtpAuth);  
		}else{
			props.put("mail.smtp.auth","false");
			session=Session.getDefaultInstance(props, null);
		}
		session.setDebug(true); 
		Transport trans = null;   
		try { 
			MimeMessage msg = new MimeMessage(session);
			try{
				Address from_address = new InternetAddress(from, displayName);
				msg.setFrom(from_address);
			}catch(java.io.UnsupportedEncodingException e){
				e.printStackTrace(); 
			} 
			InternetAddress[] address={new InternetAddress(to)};
			msg.setRecipients(Message.RecipientType.TO,address);
			msg.setSubject(subject); 
			Multipart mp = new MimeMultipart();
			MimeBodyPart mbp = new MimeBodyPart();
			mbp.setContent(content.toString(), "text/html;charset=gb2312");
		    mp.addBodyPart(mbp);   
		    if(!file.isEmpty()){//有附件 
				Enumeration efile=file.elements();
				while(efile.hasMoreElements()){  
					mbp=new MimeBodyPart(); 
					filename=efile.nextElement().toString(); //选择出每一个附件名
					FileDataSource fds=new FileDataSource(filename); //得到数据源 
					mbp.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart
					mbp.setFileName(fds.getName());  //得到文件名同样至入BodyPart
					mp.addBodyPart(mbp); 
				}   
				file.removeAllElements(); 	
		    }  
			msg.setContent(mp); //Multipart加入到信件
			msg.setSentDate(new Date()); 	//设置信件头的发送日期
			//发送信件
		    msg.saveChanges();  
			trans = session.getTransport("smtp");
			trans.connect(smtpServer, username, password);
			trans.sendMessage(msg, msg.getAllRecipients());
			trans.close();
			
		}catch(AuthenticationFailedException e){	
	         map.put("state", "failed");
			 message="邮件发送失败!错误原因:\n"+"身份验证错误!";
			 e.printStackTrace();  
		}catch (MessagingException e) { 
			 message="邮件发送失败!错误原因:\n"+e.getMessage(); 
			 map.put("state", "failed");
			 e.printStackTrace();
			 Exception ex = null;
			 if ((ex = e.getNextException()) != null) {
				 System.out.println(ex.toString());
				 ex.printStackTrace(); 
			 }  
		} 
		//System.out.println("\n提示信息:"+message); 
        map.put("message", message);
		return map;
	} 
	
分享到:
评论
8 楼 侯风玄黄 2007-09-27  
学习中
7 楼 redleaf 2007-05-31  
ok,已解决cn
6 楼 spiritfrog 2007-05-15  
redleaf 写道
为什么用javamail向163发送邮件,每封信都带有一个附件的符号???
当你没有发送附件时,163也会显示一个大头针的符号,这表明有附件,可是打开这封信,信里是没有附件的,这是对的,现在我的问题就是,不管你有没有发送带附件的邮件,163都会显示一个大头针的符号 (就是有附件的符号),这个怎么解决,下面是我的代码,大家帮我看看哪写错了:

public HashMap send(){
            .............
				    if(!file.isEmpty()){//有附件 
				Enumeration efile=file.elements();
				while(efile.hasMoreElements()){  
					mbp=new MimeBodyPart(); 
					filename=efile.nextElement().toString(); //选择出每一个附件名
					FileDataSource fds=new FileDataSource(filename); //得到数据源 
					mbp.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart
					mbp.setFileName(fds.getName());  //得到文件名同样至入BodyPart
					mp.addBodyPart(mbp); 
				}   
				file.removeAllElements(); 	
		    }   
           ........	
	

这里判断如果没有附件,就直接msg.setContent(text,"gbk")吧,这样就不会提示有附件符号了.
5 楼 umbrella 2007-05-09  
直接Msg.setContent("内容","text/html;charset=gb2312");
4 楼 jhsea3do 2007-05-09  
msg.setContent(mp);

应该是如果文件为空,你就不要用下面的对象

Multipart mp = new MimeMultipart(); 
MimeBodyPart mbp = new MimeBodyPart(); 
3 楼 redleaf 2007-05-09  
不是这个原因,我把这部份全去了,还是一样
2 楼 clyde617929 2007-05-09  
可能是不是因为这样:file.isEmpty()的值不管是否为真,file这个对象在你的类里都存在,所以就会有附件。
1 楼 redleaf 2007-05-09  
为什么用javamail向163发送邮件,每封信都带有一个附件的符号???

相关推荐

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    本教程将详细讲解如何使用JavaMail API在Gmail上发送邮件,包括不带附件和带有一个附件的情况。 首先,JavaMail是一个开源的Java库,它提供了用于处理邮件的标准API。在使用JavaMail发送邮件前,你需要在项目中引入...

    JavaMail(3)——发送带附件的邮件.docx

    在JavaMail中,发送带有附件的邮件涉及到对MIME(Multipurpose Internet Mail Extensions)标准的理解和使用。MIME扩展了邮件协议,允许在邮件中包含多媒体内容,如图片、文档、音频或视频文件等。 在JavaMail中,`...

    james和javamail实现邮件收发(带发送附件)

    3. **添加附件**:如果需要发送附件,可以使用`MimeBodyPart`类创建一个包含附件的新部分,并将其添加到`Multipart`对象中。`MimeMultipart`类允许我们组合多个邮件部分,包括文本和附件。 4. **处理中文内容**:...

    使用JAVAMail代发邮件

    我们可以使用 Transport 对象来发送邮件, Transport 对象是 JavaMail 库中的一个核心对象,用于发送和接收电子邮件。我们可以使用 Transport 对象的 send 方法来发送邮件。 在发送邮件之前,我们需要设置邮件...

    javamail发送邮件(带附件)

    这个资源提供了一个具体的示例,展示了如何使用JavaMail API 来发送带有附件的邮件。以下是对这个主题的详细解释: 首先,你需要理解JavaMail的核心组件。`javax.mail` 和 `javax.mail.internet` 包含了发送邮件所...

    javamail实现邮件发送(支持多接收人、多附件)

    JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。在JavaMail中,我们可以使用 javax.mail 包中的接口和类来实现邮件服务。本教程将详细讲解如何使用 JavaMail 实现邮件发送功能,包括支持多个接收人...

    JavaMail发送邮件(文本、html、附件)

    JavaMail是一种广泛使用的Java库,用于在应用程序中发送电子邮件。这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、...

    JavaMail发送带附件的邮件

    在JavaMail中发送带附件的邮件是一个常见的需求,尤其对于企业级应用或者自动化任务来说。下面将详细介绍如何使用JavaMail来实现这一功能,以及所需依赖和示例代码。 首先,要使用JavaMail,你需要在项目中添加相应...

    JavaMail邮件发送(带附件)

    JavaMail邮件发送(带附件)

    javamail实现邮箱与邮箱发送邮件

    本示例将重点介绍如何使用JavaMail库来实现163邮箱向腾讯邮件发送邮件的流程。 首先,确保你的项目中已经包含了JavaMail所需的依赖。通常,这可以通过在Maven或Gradle的构建文件中添加对应的依赖完成。例如,如果你...

    JavaMail发送邮件的例子

    例如,你可以创建一个名为`SendMailAction`的类,其中包含一个`execute()`方法,这个方法使用JavaMail API发送邮件。 如果你的项目中包含一个名为`mySendMail`的类或文件,这可能是一个实现邮件发送的示例代码。这...

    JavaMail实现邮件发送功能,可发送、抄送、密送多人,支持多附件的发送

    JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了一组 API,使得开发者可以方便地在 Java 应用程序中集成邮件功能。本篇将详细介绍如何利用 JavaMail 实现邮件发送,包括发送、抄送、密送...

    用javaMail发送邮件

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个功能通常涉及到SMTP(简单邮件传输协议)和其他相关的互联网邮件协议。在JavaMail中,`mail.jar` 和 `activation.jar` 是两个关键的库...

    06 使用JavaMail发送带附件的邮件.exe

    06 使用JavaMail发送带附件的邮件.exe06 使用JavaMail发送带附件的邮件.exe

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...

    jsp/servlet javamail 发送邮件 可发送多个附件

    在这个场景下,我们讨论的是一个使用JSP和Servlet实现的邮件发送系统,该系统具备发送带有多个附件的功能。这个系统可能基于JavaMail API来实现邮件的发送,而JavaMail是一个强大的开源库,可以处理复杂的邮件服务...

    javaMail实现发送邮件的demo

    JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了一组 API,使得开发者可以方便地在 Java 应用程序中集成邮件功能。本示例将介绍如何使用 JavaMail 实现发送邮件的功能。 首先,我们需要...

    使用javaMail发送邮件

    JavaMail 是一个开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一组API,使得开发者可以方便地处理SMTP、POP3、IMAP等邮件协议。在本篇文章中,我们将深入探讨如何使用JavaMail API来实现邮件的发送...

    Android 使用javamail发送邮件

    在这个案例中,"LouisJavaMail-master"是一个项目仓库,包含了使用JavaMail在Android上发送邮件的示例代码。 首先,我们来理解JavaMail的基本原理。JavaMail API主要依赖于 javax.mail 和 javax.mail.internet 这两...

Global site tag (gtag.js) - Google Analytics