簡單實(shí)現(xiàn)郵件發(fā)送

2018-08-18 14:33 更新
  1. 用maven構(gòu)建一個(gè)java項(xiàng)目

2.發(fā)送郵件的核心jia包:

 <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>
      <version>1.4.7</version>
 </dependency>

3.配置文件config.properties,代碼如下:

#############Email Server Config#################
EMAIL.EMAIL_HOST=smtp.163.com
EMAIL.TRANSPORT_PROTOCOL=smtp
EMAIL.SMTP_AUTH=true
EMAIL.EMAIL_FROM=www@163.COM
EMAIL.EMAIL_USER=wwww
EMAIL.EMAIL_PWD=123456
#############Email Server Config#################
######### email #########
esb.email=xxxxxx@qq.com;aaaaaaa@qq.com

4.讀取配置文件類:Config.java:

public class Config
{
public static ThreadPoolExecutor SendPoolExecutor = new ThreadPoolExecutor(10, 50, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
    private static Properties properties = PropertiesUtil.getProperties("properties/config.properties");
    private static String emailHost;
    private static String emailFrom;
    private static String emailUser;
    private static String emailPwd;
    private static String smtpAuth;
    private static String transportProtocol;
    static{
        emailHost=properties.getProperty("EMAIL.EMAIL_HOST");
        emailFrom=properties.getProperty("EMAIL.EMAIL_FROM");
        emailUser=properties.getProperty("EMAIL.EMAIL_USER");
        emailPwd=properties.getProperty("EMAIL.EMAIL_PWD");
        smtpAuth=properties.getProperty("EMAIL.TRANSPORT_PROTOCOL");
        transportProtocolproperties.getProperty("EMAIL.SMTP_AUTH");
    }


    public static Properties getProperties()
    {
        return properties;
    }
.......
}

5.創(chuàng)建郵件配置發(fā)送類:MailUtil

public class MailUtil
{
    private static Logger logger = Logger.getLogger(MailUtil.class);
    public static void sendEamil(List<InternetAddress> addresses, List<InternetAddress> ccAddresses, String topic, String context)
    {
        try
        {
            Properties props = System.getProperties();
            props.put("mail.smtp.host", Config.getEmailHost());
            props.put("mail.smtp.auth", Config.getSmtpAuth);
            Multipart multipart = new MimeMultipart();
            MimeBodyPart bodyPart = new MimeBodyPart();
            String contentType = "text/html; charset=UTF-8";

            
            multipart.addBodyPart(bodyPart);
            Session session = Session.getDefaultInstance(props, null);
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(MsgConfig.getEmailFrom()));
            InternetAddress[] addArray = (InternetAddress[]) addresses.toArray(new InternetAddress[0]);
            message.addRecipients(Message.RecipientType.TO, addArray);
            if ( null!=ccAddresses&& ccAddresses.size() > 0)
            {
                message.setRecipients(Message.RecipientType.CC, ccAddresses.toArray(new InternetAddress[0])); // 抄送人 
            }
            message.setSubject(topic,"UTF-8");
            bodyPart.setContent(context , contentType);
            message.setContent(multipart);
            Transport transport = session.getTransport("smtp");
            transport.connect(MsgConfig.getEmailHost(), MsgConfig.getEmailUser(), MsgConfig.getEmailPwd());
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
            logger.info("sendEmail is succeed.");
        }
        catch (Exception e)
        {
            logger.info("sendEmail is error.", e);
            throw new EmailException(e.getMessage(), e);
        }
    }
    public static void main(String[] args) {

        
        try {
            List<InternetAddress> addresses=new ArrayList<InternetAddress>(); 
            InternetAddress addresses1=new InternetAddress("xxxxx@163.com");
            addresses.add(addresses1);
            MailUtil.sendEamil(addresses, null, "內(nèi)容", "呢絨");
        } catch (AddressException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

6.創(chuàng)建一個(gè)新的進(jìn)程去發(fā)送郵件:SendEmailNewThread

public class SendEmailNewThread implements Runnable {
    private static Logger logger = Logger.getLogger(SendEmailNewThread.class);
    private List<InternetAddress> emailList;
    private Map<String,String> message;
    public SendEmailNewThread(List<InternetAddress> emailList,  Map<String,String> message) {
        this.emailList = emailList;
        this.message = message;
    }
    @Override
    public void run() {
        String topic = message.get("topic");
        String context = message.get("context");
        if(emailList.size()>0){
            MailUtil.sendEamil(emailList, null, topic, context);
            logger.info("send email to:"+emailList+" success!");
        }
    }
}

7.調(diào)用測(cè)試:Test

public static void main(String[] args){
    String email = Config.getEmail();
    String[] emails = email.split(CommonConstant.SPLIT);
    List<InternetAddress> emailList = new ArrayList<InternetAddress>();
    Map<String, String> message = new HashMap<String, String>();
    message.put("topic", "xxx提醒");
    message.put("context", "已xxxxx"+itemgroupout+",請(qǐng)相關(guān)人員在srm系統(tǒng)維護(hù)數(shù)據(jù)和權(quán)限。");
    for(int i=0; i<emails.length; i++){
        InternetAddress indr = new InternetAddress(emails[i]);
        emailList.add(indr);
    }
    Config.SendPoolExecutor.execute(new SendEmailNewThread(emailList, message));
}

完結(jié)。

簡潔版:

package cyh.util;


import java.util.Date;
import java.util.Properties;


import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


import org.apache.log4j.Logger;


public class EmailUtil {
    /**
     * 發(fā)送郵件
     * @param email
     * @param code
     * @return
     */
    public static boolean sendEmail(String email, String code) {
        Logger logger=Logger.getLogger(EmailUtil.class);
        boolean result=false;
        Properties pop = new Properties();
        pop.setProperty("mail.debug", "true");
        pop.setProperty("mail.smtp.auth", "true");
        pop.setProperty("mail.host", "smtp.163.com");
        pop.setProperty("mail.transport.protocol", "smtp");


        Session session = Session.getInstance(pop);


        Message msg = new MimeMessage(session);
        try {
            msg.setSubject("Traveling Man Mailbox verification");
            msg.setText(setMessage(email,code));
            msg.setFrom(new InternetAddress("redriverhong@163.com"));


            Transport ts = session.getTransport();


            ts.connect("redriverhong", "xxxxxx");
            ts.sendMessage(msg, new Address[] { new InternetAddress(email) });
            ts.close();
            result=true;
            logger.info("郵件發(fā)送成功!");
        } catch (MessagingException e) {
            e.printStackTrace();
            result=false;
            logger.error("郵件發(fā)送失敗。");
        }
        return result;
    }


    public static String setMessage(String email,String code) {
        Date date = new Date();
        StringBuffer sb = new StringBuffer();
        sb.append("您好:").append("\n");
        sb.append("感謝您注冊(cè)旅途人網(wǎng)站!你的注冊(cè)郵箱是:").append(email).append("\n");
        sb.append("您注冊(cè)的驗(yàn)證碼是:").append(code).append("\n");
        sb.append("該驗(yàn)證碼在20分鐘內(nèi)有效,20分鐘后需要重新注冊(cè)。").append("\n");
        sb.append(date);
        return sb.toString();
    }


    public static void main(String args[]) throws MessagingException {
        sendEmail("redriverhong@163.com", "xxxxxx");
    }
}

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)