`
shelltea
  • 浏览: 34618 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaMail相关问题

    博客分类:
  • Java
阅读更多

今天做公司的项目,需要用到邮件发送,由于以前没有这方面的经验,遇到了不少问题,最终还是依靠google将问题解决。但是担心不久就忘掉,还是记下来为好。

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 邮件服务
 * 
 * @author shelltea
 * 
 */
public class MailService {
	private static final String HOST = "smtp.gmail.com";
	private static final String USER_NAME = "";
	private static final String PASSWORD = "";
	private static final String FROM = "shelltea@gmail.com";
	private String to;
	private String subject;
	private String content;

	/**
	 * 构造方法
	 * 
	 * @param to
	 *            收件人邮箱
	 */
	public MailService(String to) {
		this.to = to;
	}

	/**
	 * 发送邮件,在调用此方法之前,请设置邮件模式
	 * 
	 * @throws AddressException
	 * @throws MessagingException
	 */
	public void send() throws AddressException, MessagingException {
		Properties props = new Properties();
		props.put("mail.smtp.host", HOST);// 指定SMTP服务器
		props.put("mail.smtp.auth", "true");// 指定是否需要SMTP验证
		props.put( "mail.smtp.starttls.enable" , "true" ); 

		Session mailSession = Session.getDefaultInstance(props);

		Message message = new MimeMessage(mailSession);
		message.setFrom(new InternetAddress(FROM));// 发件人
		message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));// 收件人

		message.setSubject(subject);// 邮件主题
		message.setText(content);// 邮件内容
		message.saveChanges();

		Transport transport = mailSession.getTransport("smtp");
		transport.connect(HOST, USER_NAME, PASSWORD);
		transport.sendMessage(message, message.getAllRecipients());
		transport.close();
	}

	/**
	 * 设置邮件为发送帐户和密码模式
	 * 
	 * @param name
	 * @param password
	 */
	public void nameAndPasswordMode(String name, String password) {
		this.subject = "";
		this.content = "尊敬的客户:您好!您的账号为:" + name + ",密码为:" + password
				+ "。请妥善保存,并及时更改。";
	}
}

 下面是测试代码:

import javax.mail.MessagingException;
import javax.mail.internet.AddressException;

import org.junit.Test;

public class MailServiceTest {
	@Test
	public void testSendMail() {
		MailService mailService = new MailService("shelltea@126.com");
		mailService.nameAndPasswordMode("dasdasd", "123345567");
		try {
			mailService.send();
		} catch (AddressException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		}
	}
}

 执行下就出现了下面的异常:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream 

 gogole了下,发现是javaee.jar包和mail.jar冲突了,解决办法是:删除javaee.jar中的mail和activation文件夹。重新测试又出现异常:

530 5.7.0 Must issue a STARTTLS command first

 解决办法是加上:

props.put( "mail.smtp.starttls.enable" , "true" ); 

 重新启动测试,打开126邮箱,成功收到邮件!

分享到:
评论

相关推荐

    JavaMail相关jar包

    JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,允许开发人员发送、接收和管理电子邮件。本篇文章将深入探讨JavaMail的核心概念、关键组件以及如何使用这两个特定的jar包——`jaf-1_1_1.zip`...

    JavaMail相关Jar包

    此外,需要注意的是,随着技术的发展,JavaMail也推出了更新的版本,如`javamail-1.6.x`,这些新版本可能包含更多的特性、修复了已知问题并提升了性能。对于新项目,建议使用最新稳定版本的JavaMail以获得最佳支持和...

    JavaMail 内存溢出问题

    本篇文章将深入探讨 JavaMail 中内存溢出问题的成因、解决策略以及相关源码分析。 一、内存溢出原因 1. 邮件内容过大:如果邮件包含大量数据,如大附件或者复杂的HTML内容,可能导致内存中存储的数据超出限制。 2....

    javamail(带界面的javamail)

    JavaMail 是一个强大的开源库,用于在Java应用程序中实现电子邮件的发送和接收功能。它提供了丰富的API,使得开发者能够方便地处理SMTP、POP3、IMAP等邮件协议,支持多种邮件格式,包括文本、HTML以及带有附件的邮件...

    javamail 所有jar包

    2. **mail.jar**:这个文件是JavaMail的核心库,它包含了所有与邮件处理相关的类和接口。JavaMail API 提供了一系列的类和接口,如`Session`、`Message`、`Address`、`Transport`等,它们用于创建、配置和管理邮件...

    javamail相关的jar

    4. **`mail.jar`**:这是JavaMail的主要库文件,包含了所有JavaMail相关的类和接口。开发者通常需要将这个库添加到项目的类路径中才能使用JavaMail的功能。 使用JavaMail发送邮件的基本步骤如下: 1. **配置环境**...

    JavaMail+JAF+JavaMail_API+JavaMail_API详解

    jaf-1_1_1.zip文件包含了JAF的1.1.1版本,可能包括了库文件、API文档和其他相关资源。 JavaMail API documentation.rar可能是JavaMail API的官方英文文档,包含了详细的类、接口和方法说明,以及使用示例。这对于...

    javamail相关JAR包

    在实际开发中,将这三个JAR包加入到项目的类路径中,就可以开始编写JavaMail相关的代码了。同时,需要注意的是,由于JavaMail依赖于特定的协议和服务器设置,所以在使用时需要根据实际情况配置相应的参数,如SMTP...

    javamail相关jar包.zip

    JavaMail 是一个开源的 Java API,它允许程序员通过编写 Java 代码来发送、接收和处理电子邮件。这个API 提供了广泛的邮件服务支持,包括 SMTP、POP3、IMAP 协议,以及 MIME 邮件格式。在JavaMail中,有两个核心的库...

    JavaMail-1.5 API

    Oracle公司拥有版权,并在2013年授予了与JavaMail API相关的权限和许可。许可证的详细信息定义了开发者可以和不可以进行的操作,例如内部评估和将独立实现的JavaMail规范分发给第三方。 要使用JavaMail API,开发者...

    JavaMail常见问题.doc

    JavaMail API的Y2K兼容性意味着它能够正确处理跨世纪的日期问题。 安装和配置JavaMail API时,需将其JAR文件添加到项目或服务器的CLASSPATH中,并根据所使用的邮件服务器配置相应的主机名、用户名和密码。如果需要...

    javaMail API 跟 javaMail.jar包

    JavaMail API是Java平台上用于处理电子邮件的一套标准API,它为开发者提供了丰富的接口和类,以便于发送、接收和管理电子邮件。JavaMail API是Java EE的一部分,但也可以在Java SE环境中使用。`javaMail.jar`是...

    javamail.jar,javamail资源包

    JavaMail 是一个开源的 Java API,它为Java开发者提供了处理电子邮件的能力。这个API允许开发者发送、接收、管理邮件,包括附件、HTML 内容、MIME 多部分消息等。`javamail.jar` 文件是JavaMail的核心库,包含了所有...

    JavaMail需要的jar

    JavaMail 是一个开源的 Java API,它允许开发者在 Java 应用程序中处理电子邮件。JavaMail 提供了全面的接口,用于创建、发送和接收邮件,包括附件、HTML 内容以及支持 SMTP、POP3、IMAP 等多种邮件协议。在 ...

    javaMail代码

    其次,`javamail-1_4_1.zip` 是 JavaMail 的一个版本库,其中包含库文件、示例代码和相关的 JAR 包,供开发者在项目中使用。开发者可以解压此文件,将 JAR 包添加到项目的类路径中。 最后,`2008美河原创视频....

    JavaMail 1.6.0 的官方例子

    通过对这些官方示例的深入学习和实践,开发者不仅可以掌握 JavaMail 的基本用法,还能了解如何解决实际开发中遇到的各种邮件处理问题。在使用 JavaMail 1.6.0 的过程中,理解并应用这些知识点将大大提高开发效率和...

    封装javamail

    `lib`文件夹很可能包含了项目所依赖的JavaMail相关的库文件,如javax.mail.jar和其他可能的依赖库。在实际项目中,这些库需要被添加到项目的类路径中,以便编译和运行时能够正确引用。 `demo`文件可能是一个示例...

    JavaMail API 1.4.7 官网下载 最新版

    JavaMail API 1.4.7 是一个广泛使用的开源库,专为Java开发者设计,用于处理电子邮件相关的任务。这个版本的API提供了丰富的功能,包括发送、接收邮件,管理邮箱,处理附件,以及支持多种邮件协议如SMTP(简单邮件...

    JavaMail 1.5.2

    在JavaMail 1.5.2中,开发者可以利用以下几个关键知识点来构建邮件相关的功能: 1. **SMTP (Simple Mail Transfer Protocol)**:JavaMail API 提供了对 SMTP 协议的支持,允许开发者通过 SMTP 服务器发送邮件。SMTP...

Global site tag (gtag.js) - Google Analytics