今天做公司的项目,需要用到邮件发送,由于以前没有这方面的经验,遇到了不少问题,最终还是依靠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是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,允许开发人员发送、接收和管理电子邮件。本篇文章将深入探讨JavaMail的核心概念、关键组件以及如何使用这两个特定的jar包——`jaf-1_1_1.zip`...
此外,需要注意的是,随着技术的发展,JavaMail也推出了更新的版本,如`javamail-1.6.x`,这些新版本可能包含更多的特性、修复了已知问题并提升了性能。对于新项目,建议使用最新稳定版本的JavaMail以获得最佳支持和...
本篇文章将深入探讨 JavaMail 中内存溢出问题的成因、解决策略以及相关源码分析。 一、内存溢出原因 1. 邮件内容过大:如果邮件包含大量数据,如大附件或者复杂的HTML内容,可能导致内存中存储的数据超出限制。 2....
JavaMail 是一个强大的开源库,用于在Java应用程序中实现电子邮件的发送和接收功能。它提供了丰富的API,使得开发者能够方便地处理SMTP、POP3、IMAP等邮件协议,支持多种邮件格式,包括文本、HTML以及带有附件的邮件...
2. **mail.jar**:这个文件是JavaMail的核心库,它包含了所有与邮件处理相关的类和接口。JavaMail API 提供了一系列的类和接口,如`Session`、`Message`、`Address`、`Transport`等,它们用于创建、配置和管理邮件...
4. **`mail.jar`**:这是JavaMail的主要库文件,包含了所有JavaMail相关的类和接口。开发者通常需要将这个库添加到项目的类路径中才能使用JavaMail的功能。 使用JavaMail发送邮件的基本步骤如下: 1. **配置环境**...
jaf-1_1_1.zip文件包含了JAF的1.1.1版本,可能包括了库文件、API文档和其他相关资源。 JavaMail API documentation.rar可能是JavaMail API的官方英文文档,包含了详细的类、接口和方法说明,以及使用示例。这对于...
在实际开发中,将这三个JAR包加入到项目的类路径中,就可以开始编写JavaMail相关的代码了。同时,需要注意的是,由于JavaMail依赖于特定的协议和服务器设置,所以在使用时需要根据实际情况配置相应的参数,如SMTP...
JavaMail 是一个开源的 Java API,它允许程序员通过编写 Java 代码来发送、接收和处理电子邮件。这个API 提供了广泛的邮件服务支持,包括 SMTP、POP3、IMAP 协议,以及 MIME 邮件格式。在JavaMail中,有两个核心的库...
Oracle公司拥有版权,并在2013年授予了与JavaMail API相关的权限和许可。许可证的详细信息定义了开发者可以和不可以进行的操作,例如内部评估和将独立实现的JavaMail规范分发给第三方。 要使用JavaMail API,开发者...
JavaMail API的Y2K兼容性意味着它能够正确处理跨世纪的日期问题。 安装和配置JavaMail API时,需将其JAR文件添加到项目或服务器的CLASSPATH中,并根据所使用的邮件服务器配置相应的主机名、用户名和密码。如果需要...
JavaMail API是Java平台上用于处理电子邮件的一套标准API,它为开发者提供了丰富的接口和类,以便于发送、接收和管理电子邮件。JavaMail API是Java EE的一部分,但也可以在Java SE环境中使用。`javaMail.jar`是...
JavaMail 是一个开源的 Java API,它为Java开发者提供了处理电子邮件的能力。这个API允许开发者发送、接收、管理邮件,包括附件、HTML 内容、MIME 多部分消息等。`javamail.jar` 文件是JavaMail的核心库,包含了所有...
JavaMail 是一个开源的 Java API,它允许开发者在 Java 应用程序中处理电子邮件。JavaMail 提供了全面的接口,用于创建、发送和接收邮件,包括附件、HTML 内容以及支持 SMTP、POP3、IMAP 等多种邮件协议。在 ...
其次,`javamail-1_4_1.zip` 是 JavaMail 的一个版本库,其中包含库文件、示例代码和相关的 JAR 包,供开发者在项目中使用。开发者可以解压此文件,将 JAR 包添加到项目的类路径中。 最后,`2008美河原创视频....
通过对这些官方示例的深入学习和实践,开发者不仅可以掌握 JavaMail 的基本用法,还能了解如何解决实际开发中遇到的各种邮件处理问题。在使用 JavaMail 1.6.0 的过程中,理解并应用这些知识点将大大提高开发效率和...
`lib`文件夹很可能包含了项目所依赖的JavaMail相关的库文件,如javax.mail.jar和其他可能的依赖库。在实际项目中,这些库需要被添加到项目的类路径中,以便编译和运行时能够正确引用。 `demo`文件可能是一个示例...
JavaMail API 1.4.7 是一个广泛使用的开源库,专为Java开发者设计,用于处理电子邮件相关的任务。这个版本的API提供了丰富的功能,包括发送、接收邮件,管理邮箱,处理附件,以及支持多种邮件协议如SMTP(简单邮件...
在JavaMail 1.5.2中,开发者可以利用以下几个关键知识点来构建邮件相关的功能: 1. **SMTP (Simple Mail Transfer Protocol)**:JavaMail API 提供了对 SMTP 协议的支持,允许开发者通过 SMTP 服务器发送邮件。SMTP...