抽空找资料,做了一个发送邮件的demo,具体的说明都在注释里了。防止后面又忘了!
package sendEmail;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
*
* SendEmail
* 类作用描述
* @author yangchuang
* @since 2014-9-20 下午6:36:18
* @version 1.0.0
* 修改记录
* 修改日期 修改人 修改后版本 修改内容
*/
public class SendEmail {
/**
* Session对象,Session定义了全局的和每个用户的与邮件相关的属性,这些属性详细说明了客户机和服务器如何交流信息。
*/
private Session session;
/**
* Message表示单个邮件消息,其属性包括消息类型、地址信息和所定义的目录结构。但是Message类是一个抽象类,必须实现它的一个子类。
* Message类的主要方法有两部分,第一部分主要在发送邮件的时候使用,用于设置邮件的相关信息,包括邮件的发送者、接收者、主题和发送时间等。
* 通常使用MimeMessage,它是Message类的一个派生类。
*/
private Message message;
/**
* 是一个抽象类,用于邮件的发送。
*/
private Transport transport;
/**
* 发送邮件服务器的主机名(smtp.163.com)
*/
private String host;
/**
* 发送邮件的用户名 (xxxx@163.com)
*/
private String userName;
/**
* 与用户名对应的密码(xxxxxx)
*/
private String pwd;
/**
* 创建一个新的实例 SendEmail.
*
* @param host 发送邮件服务器的主机名(smtp.163.com)
* @param userName 发送邮件的用户名(xxxx@163.com)
* @param pwd 与用户名对应的密码(xxxxxx)
* @throws MessagingException
*/
public SendEmail(String host, String userName, String pwd) throws MessagingException {
Properties proTemp = new Properties();
// 设置发送邮件的邮件服务器的属性
proTemp.put("mail.smtp.host", host);
// 需要经过授权,也就是有户名和密码的校验,这样才能通过验证
proTemp.put("mail.smtp.auth", "true");
// 通过proTemp属性对象获取Session实例
session = Session.getDefaultInstance(proTemp);
// 通过session对象获取Message实例
message = new MimeMessage(session);
// 通过session对象获取Message实例
transport = session.getTransport("smtp");
this.host = host;
this.userName = userName;
this.pwd = pwd;
}
public void send(String from, String address, String subject, String txt) throws AddressException {
this.send(from, new String[]{address}, subject, txt);
}
public void send(String from, String[] addressesStr, String subject, String txt) throws AddressException{
Address[] addresses = new Address[addressesStr.length];
for(int i = 0; i < addressesStr.length;i++){
addresses[i] = new InternetAddress(addressesStr[i]);
}
this.send(new InternetAddress(from), addresses, subject, txt);
}
public void send(Address from, Address[] addresses, String subject, String txt) {
try {
message.setFrom(from);
// 用于设置邮件的接收者。有两个参数,第一个参数是接收者的类型,第二个参数是接收者。
// 接收者类型可以是Message.RecipientType.TO,Message.RecipientType.CC和Message.RecipientType.BCC。
// TO表示主要接收人,CC表示抄送人,BCC表示秘密抄送人。接收者与发送者一样,通常使用InternetAddress的对象。
message.addRecipients(Message.RecipientType.TO, addresses);
message.setSubject(subject);
// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart();
// 设置邮件的文本内容
BodyPart contentPart = new MimeBodyPart();
contentPart.setText(txt);
multipart.addBodyPart(contentPart);
message.setContent(multipart);
message.saveChanges();
// 链接
transport.connect(host, userName, pwd);
// 发送
transport.sendMessage(message, message.getAllRecipients());
// 关闭
transport.close();
}
catch (AddressException e) {
e.printStackTrace();
}
catch (MessagingException e) {
e.printStackTrace();
}
}
public void modifyUser(String userName, String pwd){
this.userName = userName;
this.pwd = pwd;
}
public Transport getTransport() {
return transport;
}
public String getUserName() {
return userName;
}
public String getPwd() {
return pwd;
}
}
测试代码
package sendEmail;
import javax.mail.MessagingException;
public class SendEmailTest {
public static void main(String[] args) throws MessagingException {
SendEmail sendEmail = new SendEmail("smtp.163.com", "XXXXXX@163.com", "xxxxxx");
sendEmail.send("xxxxxx@163.com", new String[]{"xxxxxxxxx@qq.com","xxxxxxxxx@qq.com"}, "还没有收到了么!", "这才是测试邮件!");
sendEmail.modifyUser("xxxxxxxxxx@163.com", "xxxxxxxxx");
sendEmail.send("xxxxxxxxxx@163.com", new String[]{"xxxxxxxx@qq.com","xxxxxxxxxx@qq.com"}, "还没有收到了么!", "这才是测试邮件!");
}
}
分享到:
相关推荐
基于Maven的javax.mail发送邮件例子程序 pom.xml添加依赖jar: <groupId>javax.mail <artifactId>mail ${javamail.version} </dependency> <javamail.version>1.4.1</javamail.version> /* 功能:...
通过java扩展包javax.mail-1.4.4.jar实现邮件发送功能。 import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart...
根据提供的文件信息,我们可以深入探讨...以上就是使用`javax.mail`发送邮件的整个流程。通过这种方式,我们可以轻松地集成邮件发送功能到Java应用中,无论是简单的通知邮件还是复杂的批量邮件发送场景都能应对自如。
采用javax.mail发送邮件,可以发送附件
要使用`javax.mail`发送邮件,你需要配置一个`Properties`对象,设置SMTP服务器信息,然后创建`Session`对象。之后,你可以创建`Message`对象,填充邮件内容,最后通过`Transport`对象发送邮件。例如: ```java ...
在开发需要发送邮件功能的应用程序时,`javax.mail.jar` 是必不可少的依赖。 标题 "javax.mail.jar下载" 指出,开发者可能遇到了缺少这个库的问题,导致在尝试发送邮件时遇到错误。这通常是因为项目中没有正确地...
基于javax.mail的邮件发送测试工具
javax.mail.jar-Java发送邮件API。Apache Email基于javax.mail做了一个开源项目,参见:http://commons.apache.org/proper/commons-email/
开发者可以通过创建 `Session` 实例,设置必要的 SMTP 服务器信息(如主机名、端口号、用户名和密码),然后使用 `Transport.send()` 方法发送邮件。 2. **POP3(Post Office Protocol version 3)** 和 **IMAP4...
1. **Transport API**:这是发送邮件的主要接口,允许开发者通过SMTP(Simple Mail Transfer Protocol)协议将邮件发送到邮件服务器。Transport类提供了发送已构造好的Message对象的方法。 2. **Store API**:该API...
通过配置会话属性、创建`Message`对象以及使用`Transport`类,可以实现从Java程序发送邮件。同时,它还支持发送HTML内容、附件以及处理复杂的邮件格式。对于需要处理邮件功能的Java项目来说,`javax.mail` 是一个必...
下面是一个简单的使用`javax.mail`发送邮件的示例代码,这个例子涵盖了多收件人、多抄送人、多密送人和多附件的功能: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.*; public ...
Java发送邮件是开发中常见的一项任务,特别是...以上就是Java使用javax.mail.jar和activation.jar发送邮件的基本知识。这两个库的结合使用极大地简化了邮件操作,使得Java开发者能够方便地集成邮件功能到自己的应用中。
要使用javax.mail发送邮件,首先需要在项目中引入相关的依赖。在这个例子中,`mail-1.4.1.jar`是Java Mail的一个版本,包含了发送邮件所需的类和接口。为了发送邮件,你需要做以下步骤: 1. 添加依赖:将`mail-...
7. **Protocol Support**: `javax.mail` 支持多种邮件协议,如POP3(Post Office Protocol v3)用于接收邮件,SMTP(Simple Mail Transfer Protocol)用于发送邮件,以及IMAP(Internet Message Access Protocol)...
javax.mail.AuthenticationFailedException异常处理。
使用JavaMail时,开发者需要添加相应的jar包到类路径中,然后通过导入相应的包,创建和配置Session,建立与邮件服务器的连接,创建Message,设置邮件属性,最后通过Transport发送邮件。对于接收邮件,需要获取Store...
发邮件程序需要的:javax.mail包
5. 使用`Transport`发送邮件:创建好`Message`后,使用`Transport`对象的`send()`方法将其发送出去。 6. 关闭资源:操作完成后,记得关闭`Folder`和`Store`,释放资源。 四、高级特性 除了基本的邮件操作,Java ...