java mail介绍_JavaMail介绍和常用的API 一个较完整的发送电子邮件函数

JavaMail,是Sun发布的用来处理email的API,提供给开发者处理电子邮件相关的编程接口。通过使用它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

在项目中添加JavaMail相关JAR文件

要使用JavaMail可以从Java官网下载JavaMail相关的文件,目前最新的是Download JavaMail 1.4.4。

如果使用Spring框架,也可以从Spring的lib目录中找到需要的JAR文件,具体在:spring目录下的\lib\j2ee文件夹下,需要用到的两个JAR文件是:mail.jar和activation.jar,把他们拷贝到项目中即可。

JavaMail常用的一些方法

JavaMail基本属性设置:

//创建JavaMail需要用到的属性类:

Properties props = new Properties();

//设置smtp服务器

props.put("mail.smtp.host", "smtp.qq.com");

//设置验证为true

props.put("mail.smtp.auth", "true");

创建验证器

Authenticator authenticator = new Authenticator() {

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication("xxx@qq.com","password"); }

};

使用上面的Properties和验证器创建邮件消息需要用到的Session:

Session session = Session.getDefaultInstance(props, authenticator);

创建和设置邮件:

MimeMessage mimeMessage = new MimeMessage(session);

//设置发送者

mimeMessage.setFrom(new InternetAddress("xxx@qq.com"));

//设置收件人邮箱:

mimeMessage.setRecipient(Message.RecipientType.TO, "xxx@qq.com");

//设置标题:

mimeMessage.setSubject("来自IT宅的邮件", "GBK");

//设置发送日期:

mimeMessage.setSentDate(new Date());

设置内容有两种方法: 纯文本邮件

//创建附件

Multipart multipart = new MimeMultipart();

//创建邮件内容

MimeBodyPart body = new MimeBodyPart();

body.setText("正文:www.itzhai.com", "GBK");

复杂邮件

body.setContent("正文:www.itzhai.com","text/plain;charset=GBK");

multipart.addBodyPart(body);//发件内容

设置和添加附件

//创建附件

MimeBodyPart attache = new MimeBodyPart();

//读取附件attachement(File类型)

attache.setDataHandler(new DataHandler(new FileDataSource(attachement)));

//获取附件名称

String fileName = attachement.getName();

attache.setFileName(MimeUtility.encodeText(fileName, "GBK", null));

//添加附件

multipart.addBodyPart(attache);

发送邮件

Transport.send(mimeMessage);

如果要使用QQ邮箱,记得关闭独立密码保护功能和在邮箱中设置POP3/IMAP/SMTP服务。

以下是一个比较完整的发送电子邮件的函数

/**

发送邮件

@param sender 发送邮箱

@param password 发送邮箱密码

@param receivers 接受者邮箱

@param title 邮件标题

@param mailContent 邮件内容

@param attachements 附件

@param mimetype 对象的MIME类型

@param charset 字符集

*/

public static void sendEmail(final String sender,final String password,String[] receivers, String title, String mailContent, File[] attachements, String mimetype, String charset) {

Properties props = new Properties();

//设置smtp服务器地址

//这里使用QQ邮箱,记得关闭独立密码保护功能和在邮箱中设置POP3/IMAP/SMTP服务

props.put("mail.smtp.host", "smtp.qq.com");

//需要验证

props.put("mail.smtp.auth", "true");

//创建验证器

Authenticator authenticator = new Authenticator() {

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(sender, password);

}

};

//使用Properties创建Session

Session session = Session.getDefaultInstance(props, authenticator);

//Set the debug setting for this Session

session.setDebug(true);

try {

//使用session创建MIME类型的消息

MimeMessage mimeMessage = new MimeMessage(session);

//设置发件人邮件

mimeMessage.setFrom(new InternetAddress(sender));

//获取所有收件人邮箱地址

InternetAddress[] receiver = new InternetAddress[receivers.length];

for (int i=0; i

receiver[i] = new InternetAddress(receivers[i]);

}

//设置收件人邮件

mimeMessage.setRecipients(Message.RecipientType.TO, receiver);

//设置标题

mimeMessage.setSubject(title, charset);

//设置邮件发送时间

//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

//mimeMessage.setSentDate(format.parse("2011-12-1"));

mimeMessage.setSentDate(new Date());

//创建附件

Multipart multipart = new MimeMultipart();

//创建邮件内容

MimeBodyPart body = new MimeBodyPart();

//设置邮件内容

body.setContent(mailContent, (mimetype!=null && !"".equals(mimetype) ? mimetype : "text/plain")+ ";charset="+ charset);

multipart.addBodyPart(body);//发件内容

//设置附件

if(attachements!=null){

for (File attachement : attachements) {

MimeBodyPart attache = new MimeBodyPart();

attache.setDataHandler(new DataHandler(new FileDataSource(attachement)));

String fileName = getLastName(attachement.getName());

attache.setFileName(MimeUtility.encodeText(fileName, charset, null));

multipart.addBodyPart(attache);

}

}

//设置邮件内容(使用Multipart方式)

mimeMessage.setContent(multipart);

//发送邮件

Transport.send(mimeMessage);

} catch (Exception e) {

e.printStackTrace();

}

}

private static String getLastName(String fileName) {

int pos = fileName.lastIndexOf("\");

if (pos > -1) {

fileName = fileName.substring(pos + 1);

}

pos = fileName.lastIndexOf("/");

if (pos > -1) {

fileName = fileName.substring(pos + 1);

}

return fileName;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值