需要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邮件发送工具类 封装好的 可直接使用
使用JAVAMail代发邮件 资源源于不但搜索,自由源于不但努力
JavaMail邮件发送(带附件)
java mail javamail 邮件发送,程序利用javamail技术发送邮件
javamail 邮件发送支持带有图片的html格式和普通文本格式
javamail邮件发送程序 自己建工程测试时,会与javaEE中的包文件冲突。 可以先去年javaEE进行测试
JavaMail邮件发送程序所需JAR包,包含:commons-email-1.2.jar, activation.jar, mail.jar, commons-email-1.2-sources.jar, commons-email-1.2-javadoc.jar。
简单的使用javamail发送邮件例子,基本满足普通邮件发送的需求;程序运行后可以直接执行test.java文件进行测试。
JavaMail邮件发送-为你的邮件增加背景音乐和背景图片
Struts2框架,javamail发送邮件,可以直接用main()调用,也可通过tomcat,在IE上运行,比较简单易懂。
NULL 博文链接:https://essay.iteye.com/blog/342178
代码下载后,直接修改自己邮箱密码,接收者邮箱就可发送成功。其实Java应用程序发送 E-mail 非常简单。
javaMail邮件发送,这个项目主要完成发送文本和解析html页面。
java web通过javamail实现邮件的发送接收功能。实现了邮件的发送并带有附件的功能。
压缩包包含了达成javaMail发送的前置jar包(activation.jar和mail.jar)同时包含了对应的发送邮件的Deom,直接复制就可跑
在Android上使用JavaMail发送邮件,可以发送附件。 使用了 mail.jar activation.jar additional.jar
自己写的邮件发送功能。可以参考一下,已经实验通过。不含jar文件。
这是一个简单的javamail实例经过本人测试无误