`

java发邮件

阅读更多
一、
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;


public class EmailUtil {
    public static void sendEmail(Object object){
        Properties props = new Properties();

//配置发邮件主机及SMTP
        props.setProperty("mail.host", "mail.china-ops.com");
        props.setProperty("mail.smtp.auth", "true");
        Authenticator authenticator = new Authenticator(){
            @Override
            public PasswordAuthentication getPasswordAuthentication() {

//发件人邮箱用户名和密码
                return new PasswordAuthentication("用户名","密码");
            }
        };
        Session session = Session.getDefaultInstance(props, authenticator);
        session.setDebug(true);
        
        Message message = new MimeMessage(session);
        
        try {

// 发件人
            message.setFrom(new InternetAddress("发件人邮箱"));

//收件人
            message.setRecipients(RecipientType.TO,InternetAddress.parse("接收者邮箱1,接收者邮箱2"));

//标题
            message.setSubject(ticket.getTicketType());

//内容
            String content = ""
                    + "您好:"
                    + ""
                    + "简要说明:"               
                    + ""
                    + ""+ dateToString(new Date(), "yyyy-MM-dd HH:mm:ss") + ""
                    + "";

            message.setContent(content,"text/html;charset=UTF-8");
            
            Transport.send(message);
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

     public Date stringToDate(String strTime, String formatType)
             throws Exception {
         SimpleDateFormat formatter = new SimpleDateFormat(formatType);
         Date date = null;
         date = formatter.parse(strTime);
         return date;
     }
}


二、
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import javax.mail.internet.MimeMessage;

import org.apache.velocity.app.VelocityEngine;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.ui.velocity.VelocityEngineUtils;

/**
* Created with IntelliJ IDEA.
* 修改描述
*/
public class ActsocialMailSender {
   //从配置文件中读取相应的邮件配置属性
   private static final String emailHost = "smtp.126.com";
   private static final String userName = "sample@126.com";
   private static final String password = "password!";
   private static final String mailAuth = "true";
   private static Map<String, Object> proMap = null;
   private static JavaMailSenderImpl instance = null;
   private static VelocityEngine velocityEngine = null;

   static {
       proMap = new HashMap<String, Object>();
       proMap.put("resource.loader", "class");
       proMap.put("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");

   }

   public static JavaMailSender getInstance() {
       if (null == instance) {
           synchronized (JavaMailSenderImpl.class) {
               if (null == instance) {
                   instance = new JavaMailSenderImpl();
                   instance.setHost(emailHost);
                   instance.setUsername(userName);
                   instance.setPassword(password);
                   Properties properties = new Properties();
                   properties.setProperty("mail.smtp.auth", mailAuth);
                   //使用gmail发送邮件是必须设置如下参数的 主要是port不一样
                   if (emailHost.indexOf("smtp.gmail.com")>=0) {
                       properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
                       properties.setProperty("mail.smtp.socketFactory.fallback", "false");
                       properties.setProperty("mail.smtp.port", "465");
                       properties.setProperty("mail.smtp.socketFactory.port", "465");
                   }
                   instance.setJavaMailProperties(properties);
               }
           }
       }

       return instance;
   }

   public static VelocityEngine getVelocityEngineInstance() {
       if (null == velocityEngine) {
           synchronized (VelocityEngine.class) {
               if (null == velocityEngine) {
                   velocityEngine = new VelocityEngine();
                   for (Map.Entry<String, Object> entry : proMap.entrySet()) {
                       velocityEngine.setProperty(entry.getKey(), entry.getValue());
                   }
               }
           }
       }
       return velocityEngine;
   }

   public static void sendEmail(final Map<String,Object> model,final String subject,final String vmfile,final String[] mailTo,final String [] files)
   {
       MimeMessagePreparator preparator = new MimeMessagePreparator() {
           //注意MimeMessagePreparator接口只有这一个回调函数
           public void prepare(MimeMessage mimeMessage) throws Exception
           {
               MimeMessageHelper message = new MimeMessageHelper(mimeMessage,true,"GBK");
               //这是一个生成Mime邮件简单工具,如果不使用GBK这个,中文会出现乱码
               //如果您使用的都是英文,那么可以使用MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
               message.setTo(mailTo);//设置接收方的email地址
               message.setSubject(subject);//设置邮件主题
               message.setFrom(userName);//设置发送方地址
               String text = VelocityEngineUtils.mergeTemplateIntoString(
                       ActsocialMailSender.getVelocityEngineInstance(), vmfile, "UTF-8", model);
               //从模板中加载要发送的内容,vmfile就是模板文件的名字
               //注意模板中有中文要加GBK,model中存放的是要替换模板中字段的值
//                text = "这是我自己定义的一个邮件模板邮件示例。";
               message.setText(text, true);
               //将发送的内容赋值给MimeMessageHelper,后面的true表示内容解析成html
               //如果您不想解析文本内容,可以使用false或者不添加这项
               FileSystemResource file;
               for(String s:files)//添加附件
               {
                   file = new FileSystemResource(new File(s));//读取附件
                   message.addAttachment(s, file);//向email中添加附件
               }
           }
       };
       ActsocialMailSender.getInstance().send(preparator);//发送邮件
   }

   public static void sendAlertEmail(final Map<String,Object> model,final String[] mailTo){
       sendEmail(model, "", "", mailTo, new String[]{});
   }
}

resources/welcom.vm
<html>
<body>
<h3>您好 $!{userName}, 欢迎您加入actsocial!</h3>
<div>
    您的email地址是<a href="mailto:${emailAddress}">$!{emailAddress}</a>.
    本条信息是系统自动发送,请勿回复!
</div>
<div style="text-align: right;">
    $!{inscribe}
    <br/>
    $!{date}
</div>
</body>
</html>


分享到:
评论

相关推荐

    java发邮件 java发email

    4. **创建Message对象**:`Message`对象代表邮件本身,使用`MimeMessage`类创建它,并设置发件人、收件人、主题和正文。例如: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new ...

    java发邮件相关jar包

    在“java发邮件相关jar包”中,可能包含以下关键库: 1. **JavaMail API**: 这是Java用来处理邮件的核心库,包括`javax.mail`和`javax.mail.internet`这两个主要的包。它们提供了邮件协议(如SMTP、POP3、IMAP)的...

    java发邮件代码

    3. **创建Message对象**:使用Session对象创建一个Message实例,设置邮件的基本信息,如发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress...

    java 发邮件例子

    以下是一个基于`commons-email-1.1`库的Java发邮件实例: 首先,确保你的项目已经正确地引入了`commons-email`库。这通常通过Maven或Gradle的依赖管理来完成。如果你使用的是Maven,可以在`pom.xml`文件中添加以下...

    java发邮件完整以及各个邮箱的设置

    JavaMail是Java编程语言中用于发送和接收电子邮件的标准API,它是通过JavaMail API来实现的。这个API提供了与SMTP(简单邮件传输协议)服务器交互的能力,使得开发者可以在应用程序中轻松地发送邮件。在这个主题中,...

    java发邮件用到的jar包

    在本例中,"java发邮件用到的jar包"指的是用于处理电子邮件的Java类库。下面将详细解释如何使用这些jar包以及相关的知识点。 首先,JavaMail API是Java中处理邮件的核心库,它提供了发送和接收电子邮件的接口。为了...

    用java发邮件(保证秒懂)

    通过实例,用java发邮件,保证秒懂, Xmail xmail = new Xmail(); xmail.setUsername("/////@163.com"); //设置发件人邮箱名字 xmail.setPassword("*******"); //邮箱密码 xmail.setHost("smtp.163.com"); //...

    java 发邮件项目

    综上所述,"java 发邮件项目"涵盖的内容广泛,包括了邮件系统的配置、邮件对象的构建、网络通信以及异常处理等多个方面。通过这个项目,开发者可以学习到如何在Java环境中实现可靠且灵活的邮件发送功能。

    java发邮件所需架包

    在Java编程中,发送电子邮件是一项常见的任务,而这个“java发邮件所需架包”则包含了完成这项任务所需的两个关键库:activation和mail。这两个库是JavaMail API的一部分,提供了发送和接收电子邮件的功能。 首先,...

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

    接下来,我们需要创建一个`MimeMessage`对象,并设置必要的邮件属性,如发件人、收件人、主题和正文。然后,我们将通过`MimeBodyPart`和`MimeMultipart`类来处理附件。 关键在于如何以流的形式创建Excel附件。我们...

    java发邮件 源码注释

    java发邮件

    java发邮件程序

    这个“java发邮件程序”的主题涵盖了JavaMail API的使用,它是Java平台上的标准邮件处理库。下面我们将深入探讨如何使用JavaMail API编写一个简单的邮件发送程序。 首先,你需要在项目中引入JavaMail相关的依赖。...

    java发邮件,亲测有效

    标签中的“java发邮件”指的是使用Java编程语言发送邮件。在Spring Boot项目中,我们可以引入`spring-boot-starter-mail`依赖来支持邮件服务。在Maven的pom.xml文件中,这可以通过添加以下代码实现: ```xml ...

    Java发邮件jar包

    这个Java发邮件jar包提供的功能可能更加强大,包括支持HTML邮件、添加附件、处理抄送和密送等功能。使用时,请参照官方文档或者提供的示例代码,结合自己的需求进行适当的调整。记住,始终遵循最佳实践,确保发送...

    java发邮件要用到的4个jar包

    当需要自动发邮件到制定的mail地址时,我们需要这4个jar包 注:如果jar包引用不当,则依然不能发邮件 使用步骤:1、先将jar包放入到ant%home%下的lib文件夹下,比如我的ant%home%是:D:\apache-ant-1.7.0\lib 2、...

    java 发邮件 多收件人 多抄送人 多附件

    java 发邮件工具类 多收件人 多抄送人 多附件 内有三个重载方法 使用方便

    java发邮件相关包

    "java发邮件包"可能包含以下核心库: 1. **javax.mail.jar**:这是Java Mail API的核心库,提供了邮件操作所需的所有接口和类。 2. **activation.jar**:JavaBeans Activation Framework (JAF)库,用于处理不同类型...

    Java 发邮件教程含示例代码

    Java 发邮件功能是Java应用程序与外部世界交互的重要方式之一,特别是在自动化通知、系统日志记录或者用户服务中。本文将详细介绍如何使用Java发送邮件,并提供示例代码。 首先,发送邮件需要依赖JavaMail API和...

    java发邮件注册

    "java发邮件注册"这个主题涉及到的是利用JavaMail API来实现通过电子邮件进行用户账户的激活过程。以下将详细介绍这一过程中的关键知识点。 首先,我们需要理解JavaMail API。这是一个用于处理邮件的开源库,它允许...

    java发邮件依赖jar包.zip

    在这个名为“java发邮件依赖jar包.zip”的压缩文件中,包含了两个关键的JAR文件:mail.jar和activation.jar,它们是JavaMail API的核心组成部分。 JavaMail API 是Java平台上的一个开源库,用于处理电子邮件相关的...

Global site tag (gtag.js) - Google Analytics