需要jar包:activation.jar和mail.jar
都是来自网上。
我首先在src下建了一个properties文件,存放信息,这里就不写了。
下面是一个自己封装的邮件类:
/**
* 邮件类,一个邮件对象可以看作一封邮件
* 可以有多个附件。
* */
public class Email {
// 发件人
private static String from ;
// smtp主机
private static String host;
//发件邮箱的用户名
private static String username;
//发件邮箱的密码
private static String password;
// smtp主机端口
private static String port;
private static MyAuthenticator myAuthenticator =null;
private BodyPart mbpContent = null;
private MimeMessage msg = null;
private Multipart mp = null;
/*
* 读取配置文件,初始化参数
* */
static{
Reader r = null;
try {
r = new FileReader(new File("src/mail.properties"));
Properties p = new Properties();
p.load(r);
from = p.getProperty("from");
host = p.getProperty("host");
username = p.getProperty("username");
password = p.getProperty("password");
port = p.getProperty("port");
myAuthenticator = new MyAuthenticator(username,password);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(r != null)
r.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 构造方法,
* 根据props构建session
* 根据session构建MimeMessage对象,
* 创建MimeMultipart对象,并将其加入到MimeMessage对象中
* 创建BodyPart邮件正文,并将其加入到MimeMultipart对象中
* 设置发送者 和 时间
* */
public Email(){
Properties props = new Properties();;
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", port);
Session session = Session.getDefaultInstance(props,myAuthenticator);
msg = new MimeMessage(session);
mp = new MimeMultipart();
mbpContent = new MimeBodyPart();
try {
msg.setFrom(new InternetAddress(from));
msg.setContent(mp);
mp.addBodyPart(mbpContent);
msg.setSentDate(new Date());
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
/**
* 设置邮件主题
* @param subject 邮件主题
* */
public void setSubject(String subject){
try {
//解决中文乱码
subject = MimeUtility.encodeText(subject);
msg.setSubject(subject);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
/**
* 设置接受者
* @param receiveUser 接受者地址
* */
public void setReceiveUser(String receiveUser){
try {
InternetAddress[] address ={ new InternetAddress(receiveUser)};
msg.setRecipients(Message.RecipientType.TO, address);
}catch (MessagingException e) {
e.printStackTrace();
}
}
/**
* 设置邮件正文。
* @param content 邮件正文内容
* */
public void setContent(String content){
try {
mbpContent.setText(content);
} catch (MessagingException e) {
e.printStackTrace();
}
}
/**
* 添加邮件附件,可以添加对个附件。
* @param affix 附件的地址
* @param affixName 附件的名字
* */
public void addFile(String affix,String affixName){
BodyPart messageBodyPart= new MimeBodyPart();
DataSource source = new FileDataSource(affix);
try {
messageBodyPart.setDataHandler(new DataHandler(source));
//解决附件的中文乱码
try {
affixName = MimeUtility.encodeText(affixName);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
messageBodyPart.setFileName(affixName);
mp.addBodyPart(messageBodyPart);
} catch (MessagingException e1) {
e1.printStackTrace();
}
}
/**
* 发生邮件,利用工具类Transport实现
*/
public boolean sendMail() {
try {
Transport.send(msg);
} catch (MessagingException e) {
return false;
}
return true;
}
}
/**
* 继承至Authenticator
* 用于对邮件发送时的授权和验证
* */
class MyAuthenticator extends Authenticator{
private String username;
private String password;
public MyAuthenticator(String username, String password) {
super();
this.username = username;
this.password = password;
}
public PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(username, password);
}
}
JAVA邮件发送的大致过程是这样的的:
1、构建一个继承自javax.mail.Authenticator的具体类,并重写里面的getPasswordAuthentication()方法。此类是用作登录校验的,以确保你对该邮箱有发送邮件的权利。
2、构建一个properties文件,该文件中存放SMTP服务器地址等参数。
3、通过构建的properties文件和javax.mail.Authenticator具体类来创建一个javax.mail.Session。Session的创建,就相当于登录邮箱一样。剩下的自然就是新建邮件。
4、构建邮件内容,一般是javax.mail.internet.MimeMessage对象,并指定发送人,收信人,主题,内容等等。
5、使用javax.mail.Transport工具类发送邮件。
MimeMessage-----------相当于一个邮件,可以设置发件人,收件人啦等。
MimeMultipart-------------相当于邮件的正文和邮件的集合。邮件的正文和附件看是同样的东西。
MimeBodyPart-----------邮件的正文或附件。
Transport---------工具类,负责发送邮件。
javamail中BodyPart的setText与setContent的区别;
setContent可以指定发送内容的格式,如:html,plain等,
setText只发送纯文本格式的数据
注意:在设置html时,setContent(htmlString,"text/html;charset=\"utf-8\"");记得加上字符编码.
若邮件正文是为html,且其中有图片等元素。
需要mimeMuilpart.setSubType("related")
mixed--------范围最大,可加文字或超文本,内嵌资源,附件
related--------可加文字或超文本,内嵌资源
alternative-----可加文字或超文本
bodypart.setContendID();<img src="cid:"/>---------------不会将图片以附件的形式显示出来,若不写,<img src="filename"/>,亦可以达到效果,但内嵌资源会以附件的形式在邮件里显示。
相关推荐
"常规JavaMail 邮件发送实用类"标题所指的,通常是一个自定义的Java类,封装了JavaMail API的基本操作,使得邮件发送变得更加简单和便捷。这类实用类一般包含配置SMTP服务器、设置邮件内容、添加附件等功能。 ...
这个类称为 MailInfo,包含了邮件的各种信息,例如邮件服务器的主机名和端口号、邮件发送者的地址、邮件接收者的地址、邮件主题、邮件内容、邮件附件等。 在 MailInfo 类中,我们定义了多个成员变量,用于存储邮件...
JavaMail邮件发送工具类是Java开发中用于发送电子邮件的标准库,它提供了丰富的API来处理复杂的邮件功能。在JavaMail中,我们可以通过创建特定的类和对象来实现邮件的发送。以下将详细介绍这些类以及如何使用它们。 ...
JavaMail邮件发送Demo是Java开发中用于实现电子邮件发送的一个实例,它依赖于两个关键的库:activation.jar和mail.jar。这两个库提供了JavaMail API,使得Java开发者能够方便地与各种邮件服务器进行交互,完成邮件的...
JavaMail邮件发送实例是Java开发中常见的一个应用场景,主要用于实现程序自动发送电子邮件的功能。这个实例可以帮助开发者理解如何使用JavaMail API来构建邮件服务。在JavaMail API中,我们可以使用MimeMessage类...
JavaMail邮件发送源码是Java开发中用于发送电子邮件的一个库,它提供了丰富的API来处理SMTP、POP3和IMAP等邮件协议。这个简单的javamail实例表明,开发者已经成功地测试了邮件发送功能,确保其在实际应用中可以正常...
【javamail邮件发送项目】是一个基于Java技术的邮件发送解决方案,主要利用Spring框架进行配置,结合FreeMarker(FTL)模板技术实现邮件内容的动态生成,并具备异步发送及批量处理邮件的能力,最多可同时处理1000份...
这个“javamail邮件发送接收测试”是开发者在学习过程中创建的一个测试项目,旨在帮助理解和实践 JavaMail 的核心功能。通过这个项目,我们可以深入理解如何使用 JavaMail API 来实现邮件的发送和接收。 JavaMail ...
在本篇文章中,我们将深入探讨如何利用Spring来实现JavaMail邮件发送,以及在实际应用中需要注意的关键点。 首先,我们需要理解JavaMail API的基础概念。JavaMail是一个用于处理邮件的开放源码API,它允许开发者...
JavaMail邮件发送程序是Java平台上的一个开源库,用于处理电子邮件的发送和接收。这个程序允许开发者通过SMTP(简单邮件传输协议)、POP3(邮局协议)或IMAP(因特网消息访问协议)等标准协议来收发邮件。在Java EE...
2. **获取Session对象**:使用`Properties`对象创建一个`Session`实例,它是邮件会话的容器,可以存储邮件发送的配置信息。 3. **创建Message对象**:通过`Session`对象创建一个`Message`实例,这代表了你要发送的...
JavaMail邮件发送(带附件)
2. `javax.mail.Transport`:用于实际的邮件发送,与邮件服务器进行通信。 3. `javax.mail.Message`:表示一个邮件对象,包含邮件的所有信息,如发件人、收件人、主题、正文等。 4. `javax.mail.internet....
JavaMail邮件发送是Java开发中一个常见的任务,用于程序自动化发送电子邮件。这个技术基于JavaMail API,它提供了一组丰富的接口和类,使得开发者能够轻松地处理邮件的发送、接收和管理。在JavaMail中,主要涉及的...
JavaMail邮件发送是一种在Java应用程序中发送电子邮件的技术。它是一个开源的Java库,允许开发者通过SMTP(简单邮件传输协议)或其他邮件传输协议向互联网上的邮件服务器发送邮件。这个程序是用Java编写的,并且在...
JavaMail邮件发送是一个常见的开发需求,它允许程序员通过编程方式发送包含文本、附件甚至多媒体内容的电子邮件。在Java中,JavaMail API提供了这样的功能,它是一个开源库,用于处理SMTP(简单邮件传输协议)、POP3...
这个“Javamail邮件发送”项目很可能是为了演示如何使用 Javamail API 来实现邮件发送功能,包括单独发送和群发邮件。 首先,我们需要引入 Javamail 的相关依赖。在 Maven 项目中,可以在 `pom.xml` 文件中添加以下...
在`test.java`文件中,你可以看到这些步骤的实现,通过运行该文件进行邮件发送的测试。请注意,为了安全起见,实际应用中不应硬编码敏感信息如用户名和密码,而应使用环境变量或配置文件。 总的来说,JavaMail提供...
JavaMail邮件发送程序所需JAR包,包含:commons-email-1.2.jar, activation.jar, mail.jar, commons-email-1.2-sources.jar, commons-email-1.2-javadoc.jar。