java的email_java_Email_api 发送邮件简单方法

java email 需要的包

activation.jar

mail.jar

定时对指定时间生成的报表发送邮件通知。

class

---------------------------------------------

身份认证类

package com.yjm.Authenticator;

import javax.mail.Authenticator;

import javax.mail.PasswordAuthentication;

public class EmailAuthenticator  extends Authenticator{

String username;

String password;

public EmailAuthenticator(String username,String password){

this.username=username;

this.password=password;

}

public PasswordAuthentication  getPasswordAuthentication(){

return new PasswordAuthentication(username, password);

}

}

----------------------------------------------

发送邮件信息类

package com.yjm.emailinfo;

public class EmailInfo {

private String serverName;

private String username;

private String password;

private String port;

private String fromEmailAddress;

private String toEmailAddress;

private String subject;

private String content;

private String attachFileNames;

public String getServerName() {

return serverName;

}

public void setServerName(String serverName) {

this.serverName = serverName;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getPort() {

return port;

}

public void setPort(String port) {

this.port = port;

}

public String getFromEmailAddress() {

return fromEmailAddress;

}

public void setFromEmailAddress(String fromEmailAddress) {

this.fromEmailAddress = fromEmailAddress;

}

public String getToEmailAddress() {

return toEmailAddress;

}

public void setToEmailAddress(String toEmailAddress) {

this.toEmailAddress = toEmailAddress;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public String getAttachFileNames() {

return attachFileNames;

}

public void setAttachFileNames(String attachFileNames) {

this.attachFileNames = attachFileNames;

}

}

---------------------------------------------------

邮件发送控制类

package com.yjm.emailsent;

import java.util.Date;

import java.util.Properties;

import javax.mail.Address;

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.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import com.yjm.Authenticator.EmailAuthenticator;

import com.yjm.emailinfo.EmailInfo;

public class EmailSent {

Properties pro;

public void sentEmail(EmailInfo mEmailInfo) {

EmailAuthenticator mEmailAuthenticator = new EmailAuthenticator(

mEmailInfo.getUsername(), mEmailInfo.getPassword());

pro = java.lang.System.getProperties();

pro.put("mail.smtp.host", mEmailInfo.getServerName());

pro.put("mail.smtp.port", mEmailInfo.getPort());

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

Session mSession = Session.getDefaultInstance(pro, mEmailAuthenticator);

MimeMessage mMessage = new MimeMessage(mSession);

Address from;

Address to;

try {

from = new InternetAddress(mEmailInfo.getFromEmailAddress());

to = new InternetAddress(mEmailInfo.getToEmailAddress());

mMessage.setFrom(from);

mMessage.setRecipient(Message.RecipientType.TO, to);// to address[]

// mMessage.setRecipient(Message.RecipientType.CC, cc);//抄送地址数组

mMessage.setSubject(mEmailInfo.getSubject(), "gb2312");

mMessage.setSentDate(new Date());

// 不带附件使用 mMessage.setContent();String 类型

// 带附件 要在mMessage.setContent(); MimeMultipart类型 带附件

MimeMultipart mp = new MimeMultipart();

MimeBodyPart mb = new MimeBodyPart();

mb.setContent(mEmailInfo.getContent(), "text/plain;charset=GB2312"); // 设置编码

mb.setHeader("Content-Transfer-Encoding", "base64");

mp.addBodyPart(mb);

mMessage.setContent(mp);

//     if (attachment != null) {

//                 BodyPart attachmentBodyPart = new MimeBodyPart();

//                 DataSource source = new FileDataSource(attachment);

//                 attachmentBodyPart.setDataHandler(new DataHandler(source));

// 网上流传的解决文件名乱码的方法,其实用MimeUtility.encodeWord就可以很方便的搞定

// 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码

//sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();

//messageBodyPart.setFileName("=?GBK?B?" + enc.encode(attachment.getName().getBytes()) + "?=");

//MimeUtility.encodeWord可以避免文件名乱码

//                 attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName()));

//                 multipart.addBodyPart(attachmentBodyPart);

//             }

// mMessage.setText(mEmailInfo.getContent());/正文

Transport.send(mMessage);

} catch (AddressException e) {

e.printStackTrace();

} catch (MessagingException e) {

e.printStackTrace();

}

}

}

--------------------------------------------------------------

1.MimeMessage 发送邮件实体类

2.MimeMultipart 内容载体类  包含 多个MimeBodyPart  内容  附件

3.MimeBodyPart 内容附件 存放在此对象里  此对象可多个保存在 MimeMultipart

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值