`
yr512656630
  • 浏览: 321609 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java Mail收发邮件带附件

    博客分类:
  • java
阅读更多
java Mail发送邮件带附件 <1>

package snowrain.javaMail;

import java.util.Properties;    
import javax.activation.DataHandler;    
import javax.activation.FileDataSource;    
import javax.mail.Address;    
import javax.mail.Authenticator;    
import javax.mail.BodyPart;    
import javax.mail.Message;    
import javax.mail.Multipart;    
import javax.mail.PasswordAuthentication;    
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; 

/**    
 *     
 *    
 * @author yaor      
 * @version 1.0    
 * @created 2010-7-16 下午04:53:05  
 * 邮件发送测试 mail.jar与activation.jar
 */

public class MailConstructor {
	//	 private String EnvelopeFrom;//邮件发送地址    
	// private String MailHost;//邮件服务器    
	private String UserName;// 用户名   

	private String PassWord;// 用户密码   

	private MimeMessage mimeMsg; // MIME邮件对象   

	private Session session; // 邮件会话对象   

	private Properties props; // 系统属性    

	// private boolean needAuth = false; //smtp 是否需要认证   

	private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象    

	Authenticator auth;

	public MailConstructor() {
	}

	/**   
	 * public void sendMail() {   
	 * setSmtpHost(getConfig.mailHost);// 如果没有指定邮件服务器,就从getConfig类中获取   
	 * createMimeMessage(); }   
	 */
	public MailConstructor(String smtp) {
		setSmtpHost(smtp);
		createMimeMessage();

	}

	/**   
	 * @param hostName   
	 *            String   
	 */
	public void setSmtpHost(String hostName) {
		System.out.println(" 设置系统属性:mail.smtp.host = " + hostName);
		if (props == null)
			props = System.getProperties(); // 获得系统属性对象    
		props.put("mail.smtp.host", hostName); // 设置SMTP主机   

		auth = new Email_Autherticator();//进行邮件服务器用户认证    
		props.put("mail.smtp.auth", "true");

	}

	/**   
	 * @return boolean   
	 */
	public boolean createMimeMessage() {
		try {
			System.out.println(" 准备获取邮件会话对象!");
			session = Session.getDefaultInstance(props, null); // 获得邮件会话对象    
		} catch (Exception e) {
			System.err.println("获取邮件会话对象时发生错误!" + e);
			return false;
		}
		System.out.println(" 准备创建MIME邮件对象!");
		try {
			mimeMsg = new MimeMessage(session); // 创建MIME邮件对象    
			mp = new MimeMultipart();
			return true;
		} catch (Exception e) {
			System.err.println(" 创建MIME邮件对象失败!" + e);
			return false;
		}
	}

	/**   
	 * @param need   
	 *            boolean   
	 */
	public void setNeedAuth(boolean need) {
		System.out.println(" 设置smtp身份认证:mail.smtp.auth = " + need);
		if (props == null)
			props = System.getProperties();
		if (need) {
			props.put("mail.smtp.auth", "true");
		} else {
			props.put("mail.smtp.auth", "false");
		}
	}

	/**   
	 * @param name   
	 *            String   
	 * @param pass   
	 *            String   
	 */
	public void setNamePass(String name, String pass) {
		UserName = name;
		PassWord = pass;
	}

	/**   
	 * @param mailSubject   
	 *            String   
	 * @return boolean   
	 */
	public boolean setSubject(String mailSubject) {
		System.out.println("设置邮件主题!");
		try {
			mimeMsg.setSubject(mailSubject);
			return true;
		} catch (Exception e) {
			System.err.println(" 设置邮件主题发生错误!");
			return false;
		}
	}

	/**   
	 * @param mailBody   
	 *            String   
	 */
	public boolean setBody(String mailBody) {
		try {
			BodyPart bp = new MimeBodyPart();
			bp.setContent(
					" <meta http-equiv=Content-Type content=text/html; charset=gb2312>"
							+ mailBody, "text/html;charset=GB2312");
			mp.addBodyPart(bp);
			return true;
		} catch (Exception e) {
			System.err.println(" 设置邮件正文时发生错误!" + e);
			return false;
		}
	}

	public boolean addFileAffix(String filename) {
		System.out.println(" 增加邮件附件:" + filename);
		try {
			BodyPart bp = new MimeBodyPart();
			FileDataSource fileds = new FileDataSource(filename);
			bp.setDataHandler(new DataHandler(fileds));
			bp.setFileName(fileds.getName());
			mp.addBodyPart(bp);
			return true;
		} catch (Exception e) {
			System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
			return false;
		}
	}

	public boolean setFrom(String from) {
		System.out.println("设置发信人!");
		try {
			mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人    
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	public boolean setTo(String to) {
		if (to == null)
			return false;
		try {
			mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
					.parse(to));
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	public boolean setCopyTo(String copyto) {
		if (copyto == null)
			return false;
		try {
			mimeMsg.setRecipients(Message.RecipientType.CC,
					(Address[]) InternetAddress.parse(copyto));
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	public boolean sendout() {
		try {
			mimeMsg.setContent(mp);
			mimeMsg.saveChanges();
			System.out.println(" 正在发送邮件....");
			Session mailSession = Session.getInstance(props, auth);
			Transport transport = mailSession.getTransport("smtp");
			transport.connect((String) props.get("mail.smtp.host"), UserName,
					PassWord);

			transport.sendMessage(mimeMsg, mimeMsg
					.getRecipients(Message.RecipientType.TO));
			// transport.send(mimeMsg);    
			System.out.println("发送邮件成功!");
			transport.close();
			return true;
		} catch (Exception e) {
			System.err.println("邮件发送失败!" + e);
			return false;
		}
	}

	/**   
	 * Just do it as this   
	 */
	public static void main(String[] args) {
		String mailbody = " <meta http-equiv=Content-Type content=text/html; charset=gb2312>"
				+ " <div align=center><a href=http://www.baidu.com> 恭喜你,中奖啦! </a> </div>";
		MailConstructor themail = new MailConstructor("smtp.163.com");
		themail.setNeedAuth(true);
		if (themail.setSubject("标题") == false)
			return;
		if (themail.setBody(mailbody) == false)
			return;
		if (themail.setFrom("yr512656630@163.com") == false)//接收者
			return;
		if (themail.setTo("326299987@qq.com") == false)//发送者
			return;

		if (themail.setBody("二孩,你的肚子饿了没有哦!!!") == false)
			return;
		if (themail.addFileAffix("c:/send.txt") == false)
			return;
		// if(themail.addFileAffix("c:\\boot.ini") == false) return;    
		themail.setNamePass("yr512656630@163.com", "******");
		if (themail.sendout() == false)
			return;
	}

	public class Email_Autherticator extends Authenticator {//此段代码用来进行服务器对用户的认证    
		public Email_Autherticator() {
			super();
		}

		public PasswordAuthentication getPasswordAuthentication() {
			return new PasswordAuthentication(UserName, PassWord);
		}
	}

}



所需JAR包如下:mail.jar与activation.jar


下面是发送和接收的一个DEMO

=======================================接收
package snowrain.javaMail;

/**    
 *     
 *    
 * @author yaor      
 * @version 1.0    
 * @created 2010-7-16 下午05:24:43   
 * 接收邮件测试
 */

import java.io.*;
import java.text.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class ReceiveMail {

	private MimeMessage mimeMessage = null;

	private String saveAttachPath = ""; // 附件下载后的存放目录

	private StringBuffer bodytext = new StringBuffer();

	// 存放邮件内容的StringBuffer对象
	private String dateformat = "yy-MM-dd HH:mm"; // 默认的日前显示格式

	/**
	 * 构造函数,初始化一个MimeMessage对象
	 */
	public ReceiveMail() {
	}

	public ReceiveMail(MimeMessage mimeMessage) {
		this.mimeMessage = mimeMessage;
		System.out.println("create a ReceiveMail object........");
	}

	public void setMimeMessage(MimeMessage mimeMessage) {
		this.mimeMessage = mimeMessage;
	}

	/**
	 * * 获得发件人的地址和姓名
	 */
	public String getFrom() throws Exception {
		InternetAddress address[] = (InternetAddress[]) mimeMessage.getFrom();
		String from = address[0].getAddress();
		if (from == null)
			from = "";
		String personal = address[0].getPersonal();
		if (personal == null)
			personal = "";
		String fromaddr = personal + "<" + from + ">";
		return fromaddr;
	}

	/**
	 * * 获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同 * "to"----收件人 "cc"---抄送人
	 * 
	 * 地址 "bcc"---密送人地址
	 */

	public String getMailAddress(String type) throws Exception {
		String mailaddr = "";
		String addtype = type.toUpperCase();
		InternetAddress[] address = null;
		if (addtype.equals("TO") || addtype.equals("CC")
				|| addtype.equals("BCC")) {
			if (addtype.equals("TO")) {
				address = (InternetAddress[]) mimeMessage
						.getRecipients(Message.RecipientType.TO);
			} else if (addtype.equals("CC")) {
				address = (InternetAddress[]) mimeMessage
						.getRecipients(Message.RecipientType.CC);
			} else {
				address = (InternetAddress[]) mimeMessage
						.getRecipients(Message.RecipientType.BCC);
			}
			if (address != null) {
				for (int i = 0; i < address.length; i++) {
					String email = address[i].getAddress();
					if (email == null)
						email = "";
					else {
						email = MimeUtility.decodeText(email);
					}
					String personal = address[i].getPersonal();
					if (personal == null)
						personal = "";
					else {
						personal = MimeUtility.decodeText(personal);
					}
					String compositeto = personal + "<" + email + ">";
					mailaddr += "," + compositeto;
				}
				mailaddr = mailaddr.substring(1);
			}
		} else {
			throw new Exception("Error emailaddr type!");
		}
		return mailaddr;
	}

	/**
	 * * 获得邮件主题
	 */

	public String getSubject() throws MessagingException {
		String subject = "";
		try {
			subject = MimeUtility.decodeText(mimeMessage.getSubject());
			if (subject == null)
				subject = "";
		} catch (Exception exce) {
		}
		return subject;
	}

	/**
	 * * 获得邮件发送日期
	 */

	public String getSentDate() throws Exception {
		Date sentdate = mimeMessage.getSentDate();
		SimpleDateFormat format = new SimpleDateFormat(dateformat);
		return format.format(sentdate);
	}

	/**
	 * * 获得邮件正文内容
	 */

	public String getBodyText() {
		return bodytext.toString();
	}

	/**
	 * * 解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件 *
	 * 主要是根据MimeType类型的不同执行不同的操作,一步一步的解析
	 */

	public void getMailContent(Part part) throws Exception {
		String contenttype = part.getContentType();
		int nameindex = contenttype.indexOf("name");
		boolean conname = false;
		if (nameindex != -1)
			conname = true;
		System.out.println("CONTENTTYPE: " + contenttype);
		if (part.isMimeType("text/plain") && !conname) {
			bodytext.append((String) part.getContent());
		} else if (part.isMimeType("text/html") && !conname) {
			bodytext.append((String) part.getContent());
		} else if (part.isMimeType("multipart/*")) {
			Multipart multipart = (Multipart) part.getContent();
			int counts = multipart.getCount();
			for (int i = 0; i < counts; i++) {
				getMailContent(multipart.getBodyPart(i));
			}
		} else if (part.isMimeType("message/rfc822")) {
			getMailContent((Part) part.getContent());
		} else {
		}
	}

	/**
	 * * 判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false"
	 */
	public boolean getReplySign() throws MessagingException {
		boolean replysign = false;
		String needreply[] = mimeMessage
				.getHeader("Disposition-Notification-To");
		if (needreply != null) {
			replysign = true;
		}
		return replysign;
	}

	/**
	 * * 获得此邮件的Message-ID
	 */
	public String getMessageId() throws MessagingException {
		return mimeMessage.getMessageID();
	}

	/**
	 * * 【判断此邮件是否已读,如果未读返回返回false,反之返回true】
	 */
	public boolean isNew() throws MessagingException {
		boolean isnew = false;
		Flags flags = ((Message) mimeMessage).getFlags();
		Flags.Flag[] flag = flags.getSystemFlags();
		System.out.println("flags's length: " + flag.length);
		for (int i = 0; i < flag.length; i++) {
			if (flag[i] == Flags.Flag.SEEN) {
				isnew = true;
				System.out.println("seen Message.......");
				break;
			}
		}
		return isnew;
	}

	/**
	 * * 判断此邮件是否包含附件
	 */
	public boolean isContainAttach(Part part) throws Exception {
		boolean attachflag = false;
		String contentType = part.getContentType();
		if (part.isMimeType("multipart/*")) {
			Multipart mp = (Multipart) part.getContent();
			for (int i = 0; i < mp.getCount(); i++) {
				BodyPart mpart = mp.getBodyPart(i);
				String disposition = mpart.getDisposition();
				if ((disposition != null)
						&& ((disposition.equals(Part.ATTACHMENT)) || (disposition
								.equals(Part.INLINE))))
					attachflag = true;
				else if (mpart.isMimeType("multipart/*")) {
					attachflag = isContainAttach((Part) mpart);
				} else {
					String contype = mpart.getContentType();
					if (contype.toLowerCase().indexOf("application") != -1)
						attachflag = true;
					if (contype.toLowerCase().indexOf("name") != -1)
						attachflag = true;
				}
			}
		} else if (part.isMimeType("message/rfc822")) {
			attachflag = isContainAttach((Part) part.getContent());
		}
		return attachflag;
	}

	/**
	 * * 【保存附件】
	 */

	public void saveAttachMent(Part part) throws Exception {
		String fileName = "";
		if (part.isMimeType("multipart/*")) {
			Multipart mp = (Multipart) part.getContent();
			for (int i = 0; i < mp.getCount(); i++) {
				BodyPart mpart = mp.getBodyPart(i);
				String disposition = mpart.getDisposition();
				if ((disposition != null)
						&& ((disposition.equals(Part.ATTACHMENT)) || (disposition
								.equals(Part.INLINE)))) {
					fileName = mpart.getFileName();
					if (fileName.toLowerCase().indexOf("gb2312") != -1) {
						fileName = MimeUtility.decodeText(fileName);
					}
					saveFile(fileName, mpart.getInputStream());
				} else if (mpart.isMimeType("multipart/*")) {
					saveAttachMent(mpart);
				} else {
					fileName = mpart.getFileName();
					if ((fileName != null)
							&& (fileName.toLowerCase().indexOf("GB2312") != -1)) {
						fileName = MimeUtility.decodeText(fileName);
						saveFile(fileName, mpart.getInputStream());
					}
				}
			}
		} else if (part.isMimeType("message/rfc822")) {
			saveAttachMent((Part) part.getContent());
		}
	}

	/**
	 * * 【设置附件存放路径】
	 */

	public void setAttachPath(String attachpath) {
		this.saveAttachPath = attachpath;
	}

	/**
	 * * 【设置日期显示格式】
	 */

	public void setDateFormat(String format) throws Exception {
		this.dateformat = format;
	}

	/**
	 * * 【获得附件存放路径】
	 */

	public String getAttachPath() {
		return saveAttachPath;
	}

	/**
	 * * 【真正的保存附件到指定目录里】
	 */

	private void saveFile(String fileName, InputStream in) throws Exception {
		String osName = System.getProperty("os.name");
		String storedir = getAttachPath();
		String separator = "";
		if (osName == null)
			osName = "";
		if (osName.toLowerCase().indexOf("win") != -1) {
			separator = "\\";
			if (storedir == null || storedir.equals(""))
				storedir = "c:\\tmp";
		} else {
			separator = "/";
			storedir = "/tmp";
		}
		File storefile = new File(storedir + separator + fileName);
		System.out.println("storefile's path: " + storefile.toString());
		// for(int i=0;storefile.exists();i++){
		// storefile = new File(storedir+separator+fileName+i);
		// }
		BufferedOutputStream bos = null;
		BufferedInputStream bis = null;
		try {
			bos = new BufferedOutputStream(new FileOutputStream(storefile));
			bis = new BufferedInputStream(in);
			int c;
			while ((c = bis.read()) != -1) {
				bos.write(c);
				bos.flush();
			}
		} catch (Exception exception) {
			exception.printStackTrace();
			throw new Exception("文件保存失败!");
		} finally {
			bos.close();
			bis.close();
		}
	}

	/**
	 * * ReceiveMail类测试
	 */

	public static void main(String args[]) throws Exception {
		String host = "pop.163.com";
		String username = "yr512656630";// 您的邮箱用户名
		String password = "******";// 您的邮箱密码
		Properties props = new Properties();
		Session session = Session.getDefaultInstance(props, null);
		Store store = session.getStore("pop3");
		store.connect(host, username, password);
		Folder folder = store.getFolder("INBOX");
		folder.open(Folder.READ_ONLY);
		Message message[] = folder.getMessages();
		System.out.println("Messages's length: " + message.length);
		ReceiveMail pmm = null;
		for (int i = 0; i < message.length; i++) {
			pmm = new ReceiveMail((MimeMessage) message[i]);
			System.out
					.println("Message " + i + " subject: " + pmm.getSubject());
			System.out.println("Message " + i + " sentdate: "
					+ pmm.getSentDate());
			System.out.println("Message " + i + " replysign: "
					+ pmm.getReplySign());
			System.out.println("Message " + i + " hasRead: " + pmm.isNew());
			System.out.println("Message " + i + "  containAttachment: "
					+ pmm.isContainAttach((Part) message[i]));
			System.out.println("Message " + i + " form: " + pmm.getFrom());
			System.out.println("Message " + i + " to: "
					+ pmm.getMailAddress("to"));
			System.out.println("Message " + i + " cc: "
					+ pmm.getMailAddress("cc"));
			System.out.println("Message " + i + " bcc: "
					+ pmm.getMailAddress("bcc"));
			pmm.setDateFormat("yy年MM月dd日 HH:mm");
			System.out.println("Message " + i + " sentdate: "
					+ pmm.getSentDate());
			System.out.println("Message " + i + " Message-ID: "
					+ pmm.getMessageId());
			pmm.getMailContent((Part) message[i]);
			System.out.println("Message " + i + " bodycontent: \r\n"
					+ pmm.getBodyText());
			//pmm.setAttachPath("c:\\tmp\\coffeecat1124");
			pmm.setAttachPath("c:\\mail\\mail.txt");
			pmm.saveAttachMent((Part) message[i]);
		}
	}
}



=======================================发送
package snowrain.javaMail;

/**    
 *     
 *    
 * @author yaor      
 * @version 1.0    
 * @created 2010-7-16 下午05:25:37   
 * 发送邮件测试
 */

import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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 javax.mail.internet.MimeUtility;

/**
 * Title: 使用javamail发送邮件
 * Description: 演示如何使用javamail包发送电子邮件。这个实例可发送多附件
 * @version 1.0
 */
public class SendMail {

	String to = "";// 收件人
	String from = "";// 发件人
	String host = "";// smtp主机
	String username = "";
	String password = "";
	String filename = "";// 附件文件名
	String subject = "";// 邮件主题
	String content = "";// 邮件正文
	Vector file = new Vector();// 附件文件集合

	/**
	 * <br>
	 * 方法说明:默认构造器 <br>
	 * 输入参数: <br>
	 * 返回类型:
	 */
	public SendMail() {
	}

	/**
	 * <br>
	 * 方法说明:构造器,提供直接的参数传入 <br>
	 * 输入参数: <br>
	 * 返回类型:
	 */
	public SendMail(String to, String from, String smtpServer, String username,
			String password, String subject, String content) {
		this.to = to;
		this.from = from;
		this.host = smtpServer;
		this.username = username;
		this.password = password;
		this.subject = subject;
		this.content = content;
	}

	/**
	 * <br>
	 * 方法说明:设置邮件服务器地址 <br>
	 * 输入参数:String host 邮件服务器地址名称 <br>
	 * 返回类型:
	 */
	public void setHost(String host) {
		this.host = host;
	}

	/**
	 * <br>
	 * 方法说明:设置登录服务器校验密码 <br>
	 * 输入参数: <br>
	 * 返回类型:
	 */
	public void setPassWord(String pwd) {
		this.password = pwd;
	}

	/**
	 * <br>
	 * 方法说明:设置登录服务器校验用户 <br>
	 * 输入参数: <br>
	 * 返回类型:
	 */
	public void setUserName(String usn) {
		this.username = usn;
	}

	/**
	 * <br>
	 * 方法说明:设置邮件发送目的邮箱 <br>
	 * 输入参数: <br>
	 * 返回类型:
	 */
	public void setTo(String to) {
		this.to = to;
	}

	/**
	 * <br>
	 * 方法说明:设置邮件发送源邮箱 <br>
	 * 输入参数: <br>
	 * 返回类型:
	 */
	public void setFrom(String from) {
		this.from = from;
	}

	/**
	 * <br>
	 * 方法说明:设置邮件主题 <br>
	 * 输入参数: <br>
	 * 返回类型:
	 */
	public void setSubject(String subject) {
		this.subject = subject;
	}

	/**
	 * <br>
	 * 方法说明:设置邮件内容 <br>
	 * 输入参数: <br>
	 * 返回类型:
	 */
	public void setContent(String content) {
		this.content = content;
	}

	/**
	 * <br>
	 * 方法说明:把主题转换为中文 <br>
	 * 输入参数:String strText <br>
	 * 返回类型:
	 */
	public String transferChinese(String strText) {
		try {
			strText = MimeUtility.encodeText(new String(strText.getBytes(),
					"GB2312"), "GB2312", "B");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return strText;
	}

	/**
	 * <br>
	 * 方法说明:往附件组合中添加附件 <br>
	 * 输入参数: <br>
	 * 返回类型:
	 */
	public void attachfile(String fname) {
		file.addElement(fname);
	}

	/**
	 * <br>
	 * 方法说明:发送邮件 <br>
	 * 输入参数: <br>
	 * 返回类型:boolean 成功为true,反之为false
	 */
	public boolean sendMail() {

		// 构造mail session
		Properties props = System.getProperties();
		props.put("mail.smtp.host", host);
		props.put("mail.smtp.auth", "true");
		Session session = Session.getDefaultInstance(props,
				new Authenticator() {
					public PasswordAuthentication getPasswordAuthentication() {
						return new PasswordAuthentication(username, password);
					}
				});

		try {
			// 构造MimeMessage 并设定基本的值
			MimeMessage msg = new MimeMessage(session);
			msg.setFrom(new InternetAddress(from));
			InternetAddress[] address = { new InternetAddress(to) };
			msg.setRecipients(Message.RecipientType.TO, address);
			subject = transferChinese(subject);
			msg.setSubject(subject);

			// 构造Multipart
			Multipart mp = new MimeMultipart();

			// 向Multipart添加正文
			MimeBodyPart mbpContent = new MimeBodyPart();
			mbpContent.setText(content);
			// 向MimeMessage添加(Multipart代表正文)
			mp.addBodyPart(mbpContent);

			// 向Multipart添加附件
			Enumeration efile = file.elements();
			while (efile.hasMoreElements()) {

				MimeBodyPart mbpFile = new MimeBodyPart();
				filename = efile.nextElement().toString();
				FileDataSource fds = new FileDataSource(filename);
				mbpFile.setDataHandler(new DataHandler(fds));
				mbpFile.setFileName(fds.getName());
				// 向MimeMessage添加(Multipart代表附件)
				mp.addBodyPart(mbpFile);

			}

			file.removeAllElements();
			// 向Multipart添加MimeMessage
			msg.setContent(mp);
			msg.setSentDate(new Date());
			// 发送邮件
			Transport.send(msg);

		} catch (MessagingException mex) {
			mex.printStackTrace();
			Exception ex = null;
			if ((ex = mex.getNextException()) != null) {
				ex.printStackTrace();
			}
			return false;
		}
		return true;
	}

	/**
	 * <br>
	 * 方法说明:主方法,用于测试 <br>
	 * 输入参数: <br>
	 * 返回类型:
	 */
	public static void main(String[] args) {
		SendMail sendmail = new SendMail();
		sendmail.setHost("smtp.163.com");//smtp.mail.yahoo.com.cn 
		sendmail.setUserName("yr512656630");//您的邮箱用户名
		sendmail.setPassWord("******");//您的邮箱密码
		sendmail.setTo("512656630@qq.com");//接收者
		sendmail.setFrom("yr512656630@163.com");//发送者
		sendmail.setSubject("你好,这是测试2!");
		sendmail.setContent("你好这是一个带多附件的测试2!");
		sendmail.attachfile("c:/send.txt");
		sendmail.attachfile("c:/send.txt");
		sendmail.sendMail();

	}
}



注意,在使用发送的时候会报javax.mail.AuthenticationFailedException异常

解决方法,JAR包冲突,删掉项目中java ee 5包

或者去IDE的目录找到JAVA ee5删除mail文件夹,如我用的是5.1

D:\Program Files\MyEclipse 5.5.1 GA\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_5.5.1\data\libraryset\EE_5

用压缩包打开javaee.jar 删除 mail和activation即可解决jar冲突
分享到:
评论

相关推荐

    JAVA MAIL发送邮件带附件和图片

    在Java编程中,发送带有附件和图片的电子邮件是一项常见的任务,尤其在自动化通知、报告分发等场景下。本文将详细讲解如何使用Java Mail API来实现这一功能,同时参考提供的`TemplateMailMessage.java`和`...

    java Mail 发送邮件及邮件附件

    Java Mail 发送邮件及邮件附件 Java Mail 是一个广泛使用的 Java 库,用于发送电子邮件。以下是 Java Mail 发送邮件及邮件附件的知识点。 Java Mail 简介 Java Mail 是一个 Java 库,提供了发送电子邮件的功能。...

    java 发送附件mail

    在Java编程中,发送带有附件的邮件是一项常见的任务,尤其在企业级应用或者自动化脚本中。这个场景通常涉及到JavaMail API的使用,一个强大的库,可以用来处理SMTP(简单邮件传输协议)邮件服务。接下来,我们将深入...

    javaemail发送邮件(带附件)

    "javaemail发送邮件(带附件)" javaemail发送邮件(带附件)是使用Java技术实现的邮件发送功能,支持带附件的发送。下面是该功能的知识点总结: 1. 使用JavaMailSenderImpl类来发送邮件,需要设置SMTP服务器、用户名...

    java 邮件发送 可带附件

    5. 添加附件:如果需要发送附件,可以使用MimeBodyPart和Multipart类来创建包含附件的邮件。 6. 发送邮件:使用Transport类的send方法发送邮件。 四、添加附件的实现 1. 创建MimeBodyPart对象:为每个附件创建一个...

    java 发邮件带excel附件,以流的形式发送附件,不生成excel文件

    在Java编程中,发送带有Excel附件的电子邮件是一项常见的任务,特别是在数据报告或自动化流程中。在某些场景下,我们可能希望直接以流的形式处理Excel数据,而不是先将其保存为一个实际的文件,然后再作为附件发送。...

    java发邮件 带附件 多媒体邮件

    以上就是利用Java Mail API发送带有附件及多媒体内容的邮件的主要步骤。这种方法非常灵活,可以根据不同的需求定制邮件内容。在实际应用中,还需要注意错误处理及安全性问题,确保邮件发送过程的稳定性和安全性。

    java 收发 带附件 邮件

    在Java编程中,发送和接收带有附件的电子邮件是一项...总结来说,Java Mail API提供了一套完整的框架,使得在Java中收发带有附件的邮件变得简单易行。通过理解和运用上述知识点,你可以构建出符合需求的邮件处理系统。

    java mail 发送邮件

    在Java应用程序中,我们通常使用JavaMail API来实现邮件的自动化操作,比如发送带有附件的邮件、群发邮件等。下面将详细介绍如何使用Java Mail进行邮件发送,并结合提供的文件名称,提供相关的代码实例。 首先,要...

    java mail 收发邮件Demo源码

    这个"java mail 收发邮件Demo源码"提供了一个实际应用示例,可以帮助我们理解如何使用Java Mail API实现邮件的收发以及处理附件和编码问题。 1. **Java Mail API简介** Java Mail API 是由Java Community Process ...

    java生成excle邮件附件发送

    java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送

    java mail 发送邮件代码与架包

    7. **附件支持**: 如果需要发送附件,可以使用`MimeBodyPart`和`MimeMultipart`类。创建一个`MimeBodyPart`对象,添加附件内容,然后将其添加到`MimeMultipart`对象中,最后将`Multipart`对象设为邮件内容。 8. **...

    springboot发送邮件(含带附件的邮件,定时任务等功能)

    本教程将详细介绍如何在Spring Boot项目中实现邮件发送功能,包括发送普通邮件和带有附件的邮件,以及如何设置定时任务来自动发送邮件。 首先,我们需要在项目中引入Spring Boot的邮件服务依赖。在`pom.xml`或`...

    java邮件发送(含附件发送)源码

    如果要发送附件,可以使用`Multipart`和`BodyPart`来构建复杂的邮件结构。 ```java Multipart multipart = new MimeMultipart(); // 添加文本正文 BodyPart messageBodyPart = new MimeBodyPart(); ...

    JAVA_Mail_邮件_发送_接收_抄送_密送_附件

    JAVA_Mail_邮件_发送_接收_抄送_密送_附件 该资源是一个Java项目,可用Eclipse导入即可运行。 共4个类: 1:ReceiveMail.java -接收普通邮件 2:ReciveMailWithAttachMent.java --接收含有附件的邮件 3:SendMail....

    Java实现发送邮件内容+附件

    5. **添加附件**:如果需要发送附件,可以使用`Multipart`对象来组合多个部分(正文和附件)。`MimeBodyPart`用于表示邮件的每一个部分,然后添加到`Multipart`中。 ```java Multipart multipart = new ...

    java实现发送邮件(普通邮件和带附件)功能

    这个项目提供了完整的代码示例,演示了如何在Java程序中实现发送普通邮件以及带有附件的功能。以下是对这些功能的详细解释: 首先,发送普通邮件涉及到的主要接口是`javax.mail.Session`、`javax.mail.Transport`和...

    Java Mail邮件发送源码下载

    Java Mail邮件发送是Java开发中常见的一项功能,用于在应用程序中发送电子邮件。Java Mail API提供了一个标准的接口,使得开发者可以方便地实现SMTP(简单邮件传输协议)和其他邮件协议的功能。下面将详细介绍Java ...

    java收发邮件完整版

    这个"java收发邮件完整版"项目提供了一个完整的Java邮件发送和接收的解决方案,确保用户可以顺利地通过编程方式处理电子邮件。在这个压缩包中,可能包含了一个或多个Java源代码文件,例如"71112303梁洁"和"71112418...

    java 发送邮件 spring发送邮件Mail

    `java邮件系统`和`java邮件收发`则涉及到更广泛的邮件处理概念,包括不仅限于发送,还可能包括接收和解析邮件。 综上所述,Java结合Spring框架发送邮件是一个实用且功能强大的解决方案,通过合理的配置和编程,可以...

Global site tag (gtag.js) - Google Analytics