`
azure2a
  • 浏览: 32752 次
  • 性别: Icon_minigender_1
  • 来自: 承德
社区版块
存档分类
最新评论

用javamail发邮件

阅读更多
利用javamail发邮件,可以发送普通邮件,带附件和图片的邮件:
package util.mail;
import java.util.Date;
import java.util.HashSet;
import java.util.Properties;
import java.util.ResourceBundle;
import java.util.Set;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
/**
* @author Lee
*
* 需要jaf-1_1_1及javamail-1_4_1的支持
*
*/
public class MailUtil {
private static Session session;
private static Transport sender;

private MailUtil(){  
}

public static void createSession(){
   if(session==null){
  String protocol=ResourceBundle.getBundle("mail").getString("mail.transport.protocol");
  String auth=ResourceBundle.getBundle("mail").getString("mail.smtp.auth");
  boolean debug=Boolean.parseBoolean(ResourceBundle.getBundle("mail").getString("debug"));
  
  createSession(protocol,auth,debug);
   }
}

/**
  *
  * @param protocol
  * @param auth
  * @param Debug
  *  用于创建发送邮件的配置类需要协议,是否认证,是否显示信息
  */
public static void createSession(String protocol,String auth,boolean Debug){
  Properties props=new Properties();
  props.setProperty("mail.transport.protocol",protocol);
  props.setProperty("mail.smtp.auth",auth);
  
  session=Session.getInstance(props);
  
  session.setDebug(Debug);
}

/**
  *
  * @param from 发送人的地址
  * @param to 接受人的地址
  * @param title 标题
  * @param body 邮件内容
  * @param date 发送日期
  * @return 返回邮件信息
  * @throws AddressException
  * @throws MessagingException
  * 用于发送文本信息
  */
public static MimeMessage createTextMail(String from,String to,String title,String body,Date date) throws AddressException, MessagingException{
  MimeMessage mail=new MimeMessage(session);
  
  mail.setFrom(new InternetAddress(from));
  mail.setRecipient(Message.RecipientType.TO,new InternetAddress(to));
  mail.setSentDate(date);
  mail.setSubject(title);
  mail.setText(body);
  mail.saveChanges();
  
  return mail;
}

/**
  *
  * @param from
  * @param to
  * @param title
  * @param body
  * @param date
  * @return 返回邮件信息
  * @throws AddressException
  * @throws MessagingException
  * 用于发送html邮件
  */
public static MimeMessage createHtmlMail(String from,String to,String title,String body,Date date) throws AddressException, MessagingException{
  MimeMessage mail=createTextMail(from,to,title,body,date);
  mail.setContent(body,"text/html;charset=gb2312");
  mail.saveChanges();
  return mail;
}

/**
  *
  * @param from
  * @param to
  * @param title
  * @param body
  * @param date
  * @param filenames
  * @param imgnames
  * @return 返回邮件信息
  * @throws AddressException
  * @throws MessagingException
  * 创建带图片和附件的邮件
  */
public static MimeMessage createMultiMail(String from,String to,String title,String body,Date date,String[] filenames,String[] imgnames) throws AddressException, MessagingException{
  MimeMessage mail=createHtmlMail(from,to,title,body,date);
  
  MimeMultipart allMultipart=new MimeMultipart("mixed");  
  
  MimeMultipart contentMulti=new MimeMultipart("related");  
  MimeBodyPart contentPart=new MimeBodyPart();
  
  MimeBodyPart htmlBody=new MimeBodyPart();
  
  htmlBody.setContent(body,"text/html;charset=gb2312");
  
  contentMulti.addBodyPart(htmlBody);
  
  if(imgnames!=null){
  for(MimeBodyPart part:createImgAttachment(imgnames)){
   contentMulti.addBodyPart(part);
    }
  }
  
  contentPart.setContent(contentMulti);
  allMultipart.addBodyPart(contentPart);  
  
  if(filenames!=null){  
  for(MimeBodyPart part:createAttachment(filenames)){
   allMultipart.addBodyPart(part);
    }  
  }
  
  mail.setContent(allMultipart);
  
  mail.saveChanges();
  return mail;
}

/**
  *
  * @param server 服务器
  * @param user 用户
  * @param pass 密码
  * @return
  * @throws MessagingException
  * 建立邮件发送类
  */
public static Transport createSender(String server,String user,String pass) throws MessagingException{
  sender=session.getTransport();
  sender.connect(server,user,pass);
  
  return sender;
}

public static Transport createSender() throws MessagingException{
   if(sender==null){
  String server=ResourceBundle.getBundle("mail").getString("server");
  String user=ResourceBundle.getBundle("mail").getString("user");
  String pass=ResourceBundle.getBundle("mail").getString("pass");
  
  return createSender(server,user,pass);
   }
  return sender;
}

public static void send(MimeMessage mail) throws MessagingException{
  createSession();
  createSender();
  sender.sendMessage(mail,mail.getRecipients(Message.RecipientType.TO));  
}

public static void closeSender() throws MessagingException{
  if(sender.isConnected())sender.close();
  sender=null;
  session=null;  
}

public static Set<MimeBodyPart> createAttachment(String[] filenames) throws MessagingException{
  Set<MimeBodyPart> attachments=new HashSet<MimeBodyPart>();
  for(int i=0;i<filenames.length;i++){
    MimeBodyPart attachment=new MimeBodyPart();
    FileDataSource fds=new FileDataSource(filenames);
    attachment.setDataHandler(new DataHandler(fds));
    attachment.setFileName(filenames.substring(filenames.lastIndexOf("\\")+1));
    attachments.add(attachment);
  }
  return attachments;
}

public static Set<MimeBodyPart> createImgAttachment(String[] imgnames) throws MessagingException{
  Set<MimeBodyPart> attachments=new HashSet<MimeBodyPart>();
  for(int i=0;i<imgnames.length;i++){
    MimeBodyPart attachment=new MimeBodyPart();
    FileDataSource fds=new FileDataSource(imgnames);
    attachment.setDataHandler(new DataHandler(fds));
    attachment.setFileName(imgnames.substring(imgnames.lastIndexOf("\\")+1));
    attachment.setContentID(imgnames.substring(imgnames.lastIndexOf("\\")+1));
    attachments.add(attachment);
  }
  return attachments;
}

public static void main(String[] args) throws AddressException, MessagingException{  
  MailUtil.send(MailUtil.createMultiMail("azure2a@163.com","azure2a@163.com","测试","<b>测试邮件<img src=\"cid:a.jpg\"></b>",new Date(),new String[]{"D:\\Java\\a.txt","D:\\Java\\a.jpg"},new String[]{"D:\\Java\\a.jpg"}));
  MailUtil.send(MailUtil.createMultiMail("azure2a@163.com","azure2aa@sina.com","测试","<b>测试邮件<img src=\"cid:a.jpg\"></b>",new Date(),new String[]{"D:\\Java\\a.txt","D:\\Java\\a.jpg"},new String[]{"D:\\Java\\a.jpg"}));
  MailUtil.closeSender();
}
}

配置文件
mail.properties
server=smtp.163.com
user=azure2a
pass=
mail.transport.protocol=smtp
mail.smtp.auth=true
debug=true
分享到:
评论

相关推荐

    使用JAVAMail代发邮件

    使用 JavaMail 代发邮件 使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件...

    使用javaMail发邮件及收取邮箱未读邮件并标记为已读

    在这个资源中,我们将探讨如何使用 JavaMail 实现邮件的发送、接收、查看邮件数量以及未读邮件的标记为已读。 首先,让我们从发送邮件开始。在 JavaMail 中,你需要创建一个 `Session` 对象来配置邮件服务器的连接...

    用JAVAMAIL发邮件(含附件),.TXT

    用JAVAMAIL发邮件(含附件),. TXT用JAVAMAIL发邮件(含附件),.TXT

    用javaMail发邮件

    3. 构造邮件消息:使用`Message`类创建一个邮件对象,并设置发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your-email@example.com"))...

    Apusic上用JavaMail发邮件

    总的来说,"Apusic上用JavaMail发邮件"涉及到的主要知识点有:Apusic应用服务器的使用、JavaMail API的导入和配置、SMTP协议的理解、JavaMail API的基本操作如创建`Session`、`Message`和`Transport`对象,以及处理...

    用javamail发邮件必须的三个jar包.7z

    标题提到的"用javamail发邮件必须的三个jar包.7z"包含了三个核心的JAR文件:mail.jar、activation.jar和additionnal.jar,它们对于JavaMail的邮件发送功能至关重要。 1. **mail.jar**: 这是JavaMail的主要库,包含...

    『JAVA基础』使用JavaMail发邮件的实例

    在阅读博文《『JAVA基础』使用JavaMail发邮件的实例》后,你可以进一步了解如何处理更复杂的邮件场景,如HTML格式的邮件、多语言支持以及错误处理等。这个实例不仅提供了源码,还可能包含了一些实用工具,帮助你更好...

    javaMail 发邮件

    这个例子展示了如何使用JavaMail发送带附件的邮件。需要注意的是,实际应用中应处理各种异常,确保邮件发送的健壮性。此外,如果你的邮件服务器需要身份验证,还需要提供一个Authenticator来处理登录信息。 总的来...

    基于Javamail的邮件收发系统.zip

    基于Javamail的邮件收发系统.zip基于Javamail的邮件收发系统.zip基于Javamail的邮件收发系统.zip基于Javamail的邮件收发系统.zip基于Javamail的邮件收发系统.zip基于Javamail的邮件收发系统.zip基于Javamail的邮件...

    使用JavaMail发邮件

    所需jar包 博文链接:https://jdh.iteye.com/blog/206366

    使用JavaMail发邮件示例录屏

    需要网讯的webex打开,讲解利用JavaMail发送邮件的开发过程。

    使用javamail发邮件并打包为独立的jar可执行文件

    JavaMail是一个广泛使用的Java库,用于处理电子邮件的发送和接收。它提供了丰富的API,使得开发者能够在Java应用程序中方便地实现SMTP、POP3和IMAP等邮件协议的功能。本项目是关于如何利用JavaMail API和Spring Boot...

    JavaMail 具备垃圾邮件过滤功能的邮箱

    这涉及到JavaMail API的使用,如`Session`对象用于配置邮件服务器连接参数,`Message`对象代表一封邮件,`Transport`类则负责实际的邮件发送操作。收邮件时,会通过`Store`对象连接到邮件服务器,获取`Folder`并读取...

    用javaMail发送邮件

    3. **创建邮件消息**:使用`Message`类实例化一个邮件对象,并设置必要的属性,如发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress(...

    怎么用JavaMail收取邮件

    在本文中,我们将深入探讨如何使用 JavaMail 收取邮件,包括了解 POP3 和 IMAP 协议以及如何通过 JavaMail API 实现邮件的接收。 首先,我们需要知道发送邮件通常使用 SMTP(简单邮件传输协议),而接收邮件则涉及...

Global site tag (gtag.js) - Google Analytics