使用javamail技术实现后台邮件发送功能

package com.mtf.email.service;


import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Properties;


import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;


import org.apache.log4j.Logger;


import com.mtf.email.model.Email;


public class sendMail{
public static void getAllFileName(String path,ArrayList<String> fileName)//获取当前文件夹下的所有子文件
{
File file = new File(path);
File [] files = file.listFiles();
String [] names = file.list();
if(names != null)
fileName.addAll(Arrays.asList(names));
for(File a:files)
{
if(a.isDirectory())
{
getAllFileName(a.getAbsolutePath(),fileName);
}
}
}
public static void sendMails(String recipients){
Logger logger = Logger.getLogger(sendMail.class);
logger.info("开始发送邮件!");
Email mail=new Email();
mail.setSender("xxxx@163.com");//会显示在接收方 发件人的位置
mail.setUserName("xxx");
mail.setPassword("xxxxxx");
mail.setFileName("C:\\wait");//指定的文件夹
try{
String str = mail.getFileName(); 
System.out.println("待发送的文件夹为:"+str+",其子文件如下:");//这里是将某一文件夹下的所有文件逐一发送邮件,并且在发送成功后将其移至另一文件夹
ArrayList<String> listFileName = new ArrayList<String>();
getAllFileName(str,listFileName);
for(int i=0;i<listFileName.size();i++){
System.out.println(i+"."+listFileName.get(i));
}
for(int j=0;j<listFileName.size();j++){
File selectedFile = new File(str+"/"+listFileName.get(j));
//创建邮件对象
Session session=null;
Properties props = new Properties (); 
props.put("mail.smtp.host", "smtp.163.com");//此处为发送方邮件服务器地址,要根据需要自行设置
props.setProperty("mail.transport.protocol", "smtp");
props.put("mail.smtp.port", "25");
props.put("mail.smtp.auth","true");//需要邮件服务器认证
props.put("mail.debug","true"); 
session=Session.getInstance(props); 
session.setDebug(true);
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(mail.getSender()));// 设置发件人
message.addRecipient(RecipientType.TO, new InternetAddress(recipients));// 设置收件人
message.setSubject("测试邮件121");// 设置标题
MimeMultipart partList = new MimeMultipart();// 可以装载多个主体部件!可以把它当成是一个集合
message.setContent(partList);// 把邮件的内容设置为多部件的集合对象
MimeBodyPart part1 = new MimeBodyPart();// 给部件指定内容
part1.setContent("又是一封垃圾邮件", "text/html;charset=utf-8");// 部件添加到集合中
partList.addBodyPart(part1);// 部件添加到集合中
MimeBodyPart part2 = new MimeBodyPart();// 又创建一个部件
part2.attachFile(selectedFile);// 指定附件文件的名字
partList.addBodyPart(part2);
//发送邮件
Transport transport=session.getTransport("smtp");
transport.connect("smtp.163.com",mail.getUserName(),mail.getPassword());//以smtp方式登录邮箱 
transport.sendMessage(message,message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址 
transport.close(); 
if (selectedFile.renameTo(new File("C:\\send\\" + selectedFile.getName()))){
System.out.println("File is moved successful!");
} else {  
System.out.println("File is failed to move!");
}
logger.info("发送邮件!"+selectedFile.getName());
}
}catch(Exception e){
e.printStackTrace(); 
}
}
// 接受邮箱地址和激活码
public static void main(String[] args) {
sendMails("接受邮箱地址");
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值