javaMail 发送邮件(附件及正文)
2014-11-28 00:00
323 查看
推荐链接:
http://www.blogjava.net/xixidabao/archive/2006/09/19/70499.aspx
http://www.cnblogs.com/yejg1212/archive/2013/06/01/3112702.html
Mail邮件类声明
SendMessageMail类静态方法send()
Test测试
邮件收到效果
http://www.blogjava.net/xixidabao/archive/2006/09/19/70499.aspx
http://www.cnblogs.com/yejg1212/archive/2013/06/01/3112702.html
Mail邮件类声明
public class Mail { public static final String HOST = "xxx" ; // smtp服务器 public static final String USER = "xxx" ; // 用户名--就是邮箱地址@之前的部分 public static final String PASSWORD = "xxx" ; // 密码--邮箱密码 public static final String FROM = "xxx" ; // 发件人地址 private String to = ""; // 收件人地址 private String subject = ""; // 邮件标题 private String comment=""; // 邮件内容 private String affixUrl=""; // 附件绝对路径 private String toOther=""; //抄送 /** * 发送邮件 */ public static void SendMail(Mail mail) throws AddressException, MessagingException{ SendMessageMail.send(mail); } //get/set方法......
SendMessageMail类静态方法send()
public class SendMessageMail { public static void send(Mail mail) throws AddressException, MessagingException { Properties props = new Properties(); // 存储连接邮件服务器参数 props.put("mail.smtp.host", Mail.HOST); //smtp主机 props.put("mail.smtp.auth", "true");//身份验证,目前免费邮件服务器都需要这一项 /** props对象构建一个邮件session * Session类代表JavaMail中的一个邮件会话。 * 每一个基于JavaMail的应用程序至少有一个Session(可以有任意多的Session) * JavaMail需要Properties来创建一个session对象 */ Session session = Session.getDefaultInstance(props); // 有了这句便可以在发送邮件的过程中的Console处显示过程信息,供调试使用,(你可以在控制台-console上看到发送邮件的过程) session.setDebug(false); /** * Message对象将存储我们实际发送的电子邮件信息, * Message对象被作为一个MimeMessage对象来创建。 */ MimeMessage message = new MimeMessage(session); &nb 7fe0 sp; // 加载发件人地址 message.setFrom(new InternetAddress(Mail.USER)); // 设置接收方地址使用addRecipient方法,地址类型有三种: // RecipientType.TO:e-mail的发送地址; // RecipientType.CC:抄送地址,可以为多个; // RecipientType.BCC:暗送地址,可以为多个。 if("" != mail.getTo()){ // 加载收件人地址 String toOt[] = mail.getTo().split(";"); InternetAddress[] sendTo = new InternetAddress[toOt.length]; for (int i = 0; i < toOt.length; i++) { System.out.println("发送到:" + toOt[i]); //InternetAddress类通过一个合法的e-mail构造出e-mail地址对象 message.addRecipient(Message.RecipientType.TO, new InternetAddress(toOt[i].toString())); } } //抄送 if("" != mail.getToOthers() && null != mail.getToOthers()){ // 加载抄送人地址 String toOt[] = mail.getToOthers().split(";"); InternetAddress[] sendTo = new InternetAddress[toOt.length]; for (int i = 0; i < toOt.length; i++) { System.out.println("抄送到:" + toOt[i]); sendTo[i] = new InternetAddress(toOt[i]); } message.addRecipients(Message.RecipientType.CC, sendTo); // 抄送人地址 }else{ System.out.println("没有抄送人"); } //邮件标题 message.setSubject(mail.getSubject()); // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 MimeMultipart msgMultipart = new MimeMultipart("mixed"); // message.setContent(msgMultipart); //添加正文(文本或html) MimeBodyPart content = new MimeBodyPart(); content.setContent(mail.getComment(),"text/html;charset=utf-8"); msgMultipart.addBodyPart(content); //发送附件 if (null != mail.getAffixUrl() && !"".equals(mail.getAffixUrl())) { // 添加附件 BodyPart affixPart = new MimeBodyPart(); //DataSource类表示本地文件和服务器可以直接访问的资源,它是一个抽象类,用其子类FileDataSource来创建。 DataSource source = new FileDataSource(mail.getAffixUrl()); // 添加附件的内容,附件被封装到一个DataHandler对象 affixPart.setDataHandler(new DataHandler(source)); //设置附件文件名 String affixName = null; // 附件名称因为要有后缀名,否则将无法读取和下载,所以要从affix_url中获取! if (mail.getAffixUrl().contains("//")) { int i = mail.getAffixUrl().lastIndexOf("//"); affixName = mail.getAffixUrl().substring(i + 2); } else if (mail.getAffixUrl().contains("\\")) { int i = mail.getAffixUrl().lastIndexOf("//"); affixName = mail.getAffixUrl().substring(i + 1); } else { affixName = mail.getAffixUrl(); } // javamail支持对base64编码的邮件解码,添加附件的标题 **这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码 BASE64Encoder enc = new BASE64Encoder(); // affixPart.setFileName("=?utf-8?B?"+enc.encode(affixName.getBytes())+"?="); MimeUtility //MimeUtility.encodeWord可以避免文件名乱码 try { affixPart.setFileName(MimeUtility.encodeWord(affixName)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } System.err.println(mail.getSubject() + "邮件发送附件中……"); msgMultipart.addBodyPart(affixPart); } // 将multiPart对象放到message中 message.setContent(msgMultipart); // 保存邮件 message.saveChanges(); /**发送邮件 * 邮件是既可以被发送也可以被受到。JavaMail使用了两个不同的类来完成这两个功能:Transport 和 Store。 * Transport 是用来发送信息的,而Store用来收信。对于这的教程我们只需要用到Transport对象。 */ Transport transport = session.getTransport("smtp"); // 链接服务器的邮箱 transport.connect(Mail.HOST, Mail.USER,Mail.PASSWORD); // 把邮件发送出去 System.err.println(mail.getSubject() + "邮件发送中……"); transport.sendMessage(message, message.getAllRecipients()); transport.close(); System.err.println(mail.getSubject() + "邮件发送成功"); } }
Test测试
public class TestMail { public static void main(String[] args) throws MessagingException { Mail mail = new Mail(); mail.setTo("xxx"); mail.setSubject("测试"); // mail.setComment("12345123"); // 发送html或文本 mail.setComment("<h1>hello!</h1><a href="+"http://www.baidu.com"+">www.baidu.com</a>"); //抄送 mail.setToOther("xx"); mail.setAffixUrl("C:\\Users\\admin\\Desktop\\sa.txt"); Mail.SendMail(mail); } }
邮件收到效果
相关文章推荐
- 带有附件及图片正文的JavaMail邮件发送
- JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件
- JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件
- (三)JavaMail 发送邮件之正文 && 附件
- javamail实现向多人发送带附件的html格式邮件
- android中使用javamail发送邮件附件
- javaMail发送邮件,支持多人发送,多人收信,多附件等
- JavaMail(3)——发送带附件的邮件
- javaMail发送邮件实例,支持附件和多人邮件的发送
- 邮件正文及其附件的发送的C++实现
- 用JavaMail发送带附件的邮件
- 【Vegas原创】ASP.NET读取Excel,并以邮件正文方式和附件方式发送实例
- spring邮件发送,正文附件发送的源码
- 用javamail发送邮件(带附件)的简单实例
- JavaMail-发送一封简单邮件(附带附件)
- JavaMail邮件发送-发送带附件的邮件 转的
- JAVAMAIL发送带附件的邮件实例
- 【JavaMail开发】使javamail-1.4.2 发送邮件时中文附件乱码或显示"??"的解决办法
- javamail发送复杂邮件(包含文本、图片、附件)
- 邮件正文及其附件的发送的C++实现