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("接受邮箱地址");
}
}
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("接受邮箱地址");
}
}