javax.mail 发邮件 添加附件

都是javax.mail 的使用,没有太多要讲的,代码贴上自己试验吧

private MimeMessage mailMessage; // 邮件对象
	private Multipart mp;// 附件添加的组件
	private List files = new LinkedList();// 存放附件文件

	/**
	 * 增加发送附件
	 *
	 * @param filename
	 *            邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常
	 * @return
	 */
	public boolean addFileAffix(String filename) {
		try {
			BodyPart bp = new MimeBodyPart();
			FileDataSource fileds = new FileDataSource(filename);
			bp.setDataHandler(new DataHandler(fileds));
			bp.setFileName(MimeUtility.encodeText(fileds.getName(), "utf-8", null)); // 解决附件名称乱码
			mp.addBodyPart(bp);// 添加附件
			files.add(fileds);
		} catch (Exception e) {
			System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
			return false;
		}
		return true;
	}

	/**
	 * 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8
	 *
	 * @param mailBody
	 * @return
	 */
	public boolean setBody(String mailBody) {
		try {
			BodyPart bp = new MimeBodyPart();
			bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>" + mailBody, "text/html;charset=UTF-8");
			// 在组件上添加邮件文本
			mp.addBodyPart(bp);
		} catch (Exception e) {
			System.err.println("设置邮件正文时发生错误!" + e);
			return false;
		}
		return true;
	}

	/**
	 *
	 * @param mailInfo
	 * @param content
	 * @param mailAddresses
	 * @param filename
	 * @return
	 * @throws MessagingException
	 */
	public boolean sendTextMail(MailSenderInfo mailInfo, String content, List<String> mailAddresses, String filename) throws MessagingException {
		MyAuthenticator authenticator = null;
		Properties pro = mailInfo.getProperties();
		if (mailInfo.isValidate()) {
			authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
		}
		Session sendMailSession = Session.getDefaultInstance(pro, authenticator);

		mailMessage = new MimeMessage(sendMailSession);
		mp = new MimeMultipart();// 生成附件组件的实例
		Address from = new InternetAddress(mailInfo.getFromAddress());
		mailMessage.setFrom(from);

		Address[] toMails = new Address[mailAddresses.size()];
		int i = 0;
		for (String mail : mailAddresses) {
			if (Tools.isNotNull(mail)) {
				toMails[i] = new InternetAddress(mail);
				i++;
			}
		}
		mailMessage.setSubject(mailInfo.getSubject());
		mailMessage.setSentDate(new Date());
		mailMessage.setRecipients(Message.RecipientType.TO, toMails);
		setBody(content);
		if (Tools.isNotNull(filename)) {// 添加附件
			addFileAffix(filename);
			mailMessage.setContent(mp);
			mailMessage.saveChanges();
		}

		try {
			Transport.send(mailMessage);
		} catch (Exception e) {
			e.printStackTrace();
		}

		return true;

	}

直接调用的函数:

/**
* @throws MessagingException
* @Title: mailsend
* @Description: TODO
* @param @param map
* @return void
* @throws
*/
public void mailsend(String content, List<String> mailAddresses, String mailTitle,String filename) throws MessagingException { 

MailSenderInfo mailinfo = new MailSenderInfo();
mailinfo.setMailServerHost("xxxx");
mailinfo.setMailServerPort("xx");
mailinfo.setFromAddress("xx");
mailinfo.setUserName("xx");
mailinfo.setPassword("xx");
mailinfo.setValidate(true);
mailinfo.setSubject(mailTitle);
SimpleMailSender send = new SimpleMailSender();
send.sendTextMail(mailinfo, content, mailAddresses,filename);
}
时间: 2024-11-08 18:42:12

javax.mail 发邮件 添加附件的相关文章

javax.mail 发邮件时添加附件

import java.util.Properties; 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

利用springframework+javax.mail发邮件(普通邮件、带附件邮件、HTML格式邮件)

Spring提供了发送电子邮件的支持,可以发送普通邮件.带附件邮件.HTML格式邮件,甚至还可以使用Velocity模板定制化邮件内容. 一.引入相关的库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <!-- spring核心库 -->         <dependency>             <groupId>org.springframework<

javax.mail 发邮件方法二

import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.i

1.3windows命令行下使用blat发邮件带附件

windows命令行bat批处理脚本的应用之blat程序自动发邮件1.3windows命令行下使用blat发邮件带附件__游旗丶引莫(孙忠) 发邮件脚本模板 rem ----邮件内容-----set body="test mail" rem ----邮件主题----set s="测试test"rem ----收件邮箱-----set [email protected]rem ----发件邮箱-----set [email protected]rem ----邮箱秘钥

System.Web.Mail发邮件引发0x80040217错误的解决过程

 使用System.Web.Mail 写了一个发送邮件程序,一直都工作正常. 最近更换新邮件服务器后,发送邮件时出现0x80040217错误. 从网上搜了一下,有用的结果不多,有说是Web.Mail过时,要改用system.net.mail等等. 后来跟踪代码,发现是进行到验证的步骤时出的问题,于是尝试去掉"@域名",真的可以了. 那为什么不提示用户名错误呢,通过使用控制台telnet测试发现, 新邮件服务的连接,在任何指令出错后都会立即断开,从而引发代码0x80040217错误.

Java Mail---SMTP协议-Java发邮件(带附件)演示过程

转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] JavaMail-API简介: 邮件客户端的主要任务是向邮件服务器发送邮件,以及接收来自邮件服务器的邮件. Sun公司制定了一套API,它封装了邮件通信的各种协议.为Java开发者提供了收发电子邮件的公共接口. 需要的jar包 mail.jar和activation-1.1.0.jar链接: https://github.com/chenhaoxiang/Java/tree/ma

java发邮件带附件实例

package cn.bric.crm.util; import java.util.Date; import java.util.Enumeration; import java.util.Properties; import java.util.Vector; import javax.activation.*; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.Multipart; i

Java发邮件带附件测试通过

package cn.bric.crm.util; import java.util.Date; import java.util.Enumeration; import java.util.Properties; import java.util.Vector; import javax.activation.*; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.Multipart; i

用commons-email,javax.mail发送邮件,中文附件名乱码。

import java.io.UnsupportedEncodingException; import javax.mail.internet.MimeUtility; import org.apache.commons.mail.EmailAttachment; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.MultiPartEmail; public class MailTest {