`
2277259257
  • 浏览: 515097 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

电子邮件系统 5----使用Java Mail Authenticator子类进行用户认证来发送电子邮件示例 .

 
阅读更多
  1. /** 
  2.  * CrazyItTest 
  3.  * 使用JavaMail的Authenticator类进行用户认证发送带附件的电子邮件示例 
  4.  */  
  5. package com.labci.javamail.test;  
  6. import java.io.FileNotFoundException;  
  7. import java.io.IOException;  
  8. import java.io.UnsupportedEncodingException;  
  9. import java.util.Date;  
  10. import java.util.Properties;  
  11. import javax.activation.DataHandler;  
  12. import javax.activation.FileDataSource;  
  13. import javax.mail.Authenticator;  
  14. import javax.mail.MessagingException;  
  15. import javax.mail.PasswordAuthentication;  
  16. import javax.mail.Session;  
  17. import javax.mail.Transport;  
  18. import javax.mail.Message.RecipientType;  
  19. import javax.mail.internet.AddressException;  
  20. import javax.mail.internet.InternetAddress;  
  21. import javax.mail.internet.MimeBodyPart;  
  22. import javax.mail.internet.MimeMessage;  
  23. import javax.mail.internet.MimeMultipart;  
  24. import javax.mail.internet.MimeUtility;  
  25. /** 
  26.  * @author Bill Tu 
  27.  * @since May 26, 2011(21:03:36 PM) 
  28.  * 
  29.  */  
  30. public class SendEmailTest {  
  31.     private static final String USERNAME="iwtxokhtd";//用户名   
  32.     private static final String PASSWORD="123456";//密码   
  33.     private static final String PROTOCOL="smtp";//邮件传输协议   
  34.     private static final String HOST="smtp.163.com";//SMTP服务器主机地址   
  35.       
  36.     /** 
  37.      * 客户端程序自己实现Authenticator子类用于用户认证 
  38.      */  
  39.     static class MyAuthenricator extends Authenticator{  
  40.         String user=null;  
  41.         String pass="";  
  42.         public MyAuthenricator(String user,String pass){  
  43.             this.user=user;  
  44.             this.pass=pass;  
  45.         }  
  46.         @Override  
  47.         protected PasswordAuthentication getPasswordAuthentication() {  
  48.             return new PasswordAuthentication(user,pass);  
  49.         }  
  50.           
  51.     }  
  52.       
  53.      private static Session getSession(){  
  54.          Properties mailProps=new Properties();  
  55.          mailProps.put("mail.smtp.auth""true");//向SMTP服务器提交用户认证   
  56.          mailProps.put("mail.transport.protocol", PROTOCOL);//指定发送邮件协议   
  57.          mailProps.put("mail.host", HOST);//SMTP服务器主机地址   
  58.            
  59.          //拿session的时候传入Authenticator子类进行验证   
  60.          Session session=Session.getDefaultInstance(mailProps,new MyAuthenricator(USERNAME,PASSWORD));  
  61.          return session;  
  62.      }  
  63.       
  64.       
  65.      private static void sendEmail(MimeMessage message) throws MessagingException{  
  66.         //从session中取mail.smtp.protocol指定协议的Transport   
  67.          Transport transport=getSession().getTransport();  
  68.          //建立与指定的SMTP服务器的连接   
  69.          transport.connect();//此时不需要任务参数   
  70.         //发给所有指定的收件人,若使用message.getAllRecipients()则还包括抄送和暗送的人   
  71.          transport.sendMessage(message, message.getRecipients(RecipientType.TO));  
  72.          //关闭连接   
  73.          transport.close();  
  74.            
  75.          /** 
  76.           * Transport的send静态方法包括了connect,saveChanges,sendMessage,close等一系列操作, 
  77.           * 但它连接同一个SMTP服务器每发一封邮件给服务器都得重新建立连接和断开连接, 
  78.           * 虽然使用较方便,但开销较大,不值得推荐。 
  79.           */  
  80.         // Transport.send(message, message.getRecipients(RecipientType.TO));   
  81.      }  
  82.        
  83.       
  84.      private static MimeMessage getTextMessage(Session session) throws AddressException,   
  85.             MessagingException, UnsupportedEncodingException{  
  86.           MimeMessage message=new MimeMessage(session);  
  87.           String from="iwtxokhtd@163.com";//发送方邮件地址   
  88.           String to="277515433@qq.com";//接收方邮件地址   
  89.             
  90.           String subject="从163发过来的邮件";//邮件主题,注意是中文的   
  91.             
  92.           String content="<h1>看看能收到不,JavaMail写的邮件发送程序,带附件哦</h1><img src="cid:my1.jpg" mce_src="cid:my1.jpg"/>";//cid为my1.jpg,下文会设置此cid   
  93.           message.setFrom(new InternetAddress(from));  
  94.           message.setRecipient(RecipientType.TO, new InternetAddress(to));  
  95.           message.setSubject(subject);  
  96.           message.setSentDate(new Date());//发送时间   
  97.             
  98.           MimeBodyPart picBodyPart=getPicBodyPart(content,"F://My头像.jpg");  
  99.           MimeBodyPart attached1BodyPart=getAttachedBodyPart("F://nginx中文.txt");//注意附件名是中文的  
  100.           MimeBodyPart attached2BodyPart=getAttachedBodyPart("F://nginx英文.doc");  
  101.             
  102.           MimeMultipart mmp=new MimeMultipart("mixed");//MIME消息头组合类型是mixed(html+附件)   
  103.           mmp.addBodyPart(picBodyPart);  
  104.           mmp.addBodyPart(attached1BodyPart);  
  105.           mmp.addBodyPart(attached2BodyPart);  
  106.             
  107.           message.setContent(mmp);  
  108.           message.saveChanges();  
  109.             
  110.           return message;  
  111.         
  112.      }  
  113.        
  114.      /** 
  115.       * 处理文件名 
  116.       * 此处是针对Window下的。 
  117.       * @param filePath 
  118.       * @return 
  119.       */  
  120.      private static String doHandlerFileName(String filePath){  
  121.           String fileName=filePath;  
  122.           if(null !=filePath && !"".equals(filePath)){  
  123.            fileName=filePath.substring(filePath.lastIndexOf("//")+1);  
  124.           }  
  125.           return fileName;  
  126.      }  
  127.        
  128.        
  129.      private static MimeBodyPart getAttachedBodyPart(String filePath) throws MessagingException,  
  130.             UnsupportedEncodingException{  
  131.           MimeBodyPart attached=new MimeBodyPart();  
  132.           FileDataSource fds=new FileDataSource(filePath);  
  133.           attached.setDataHandler(new DataHandler(fds));  
  134.           String fileName=doHandlerFileName(filePath);  
  135.           attached.setFileName(MimeUtility.encodeWord(fileName));//处理附件文件的中文名问题   
  136.           return attached;  
  137.      }  
  138.        
  139.      /** 
  140.       * 处理html加图片的类型(related) 
  141.       * @param content 
  142.       * @param picName 
  143.       * @return 
  144.       * @throws MessagingException 
  145.       */  
  146.      private static MimeBodyPart getPicBodyPart(String content,String picName) throws MessagingException{  
  147.           MimeBodyPart contentPart=new MimeBodyPart();  
  148.             
  149.           MimeMultipart mmp=new MimeMultipart("related");//此处MIME消息头组合类型为related   
  150.           MimeBodyPart contented=new MimeBodyPart();  
  151.           contented.setContent(content,"text/html;charset=gb2312");//因正文内容中有中文   
  152.             
  153.           mmp.addBodyPart(contented);  
  154.             
  155.           MimeBodyPart picBodyPart=new MimeBodyPart();  
  156.           FileDataSource fds=new FileDataSource(picName);  
  157.           picBodyPart.setDataHandler(new DataHandler(fds));  
  158.           picBodyPart.setContentID("my1.jpg");//设置contentId   
  159.             
  160.           mmp.addBodyPart(picBodyPart);  
  161.             
  162.           contentPart.setContent(mmp);  
  163.             
  164.           return contentPart;  
  165.      }  
  166.        
  167.        
  168.      public static void main(String[] args) throws AddressException,   
  169.             MessagingException, FileNotFoundException, IOException {  
  170.          sendEmail(getTextMessage(getSession()));  
  171.         
  172.      }  
  173. }  
分享到:
评论

相关推荐

    Java_Mail.zip_java_java mail_java.mail_mail

    Java Mail 是一个强大的Java库,用于处理电子邮件的发送和接收。这个库提供了全面的API,使得开发者能够方便地实现SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件服务。在Java应用...

    mail-1.4.1.jar

    在Java开发中,进行电子邮件的发送是一项常见的任务,而实现这一功能的核心库便是`mail-1.4.1.jar`。这个库提供了全面的邮件处理能力,包括创建、发送、接收以及管理电子邮件。本文将深入探讨`mail-1.4.1.jar`库的...

    j简单邮件发送示例(java源代码)

    在Java编程语言中,发送电子邮件是一项常见的任务,尤其在系统集成、自动化通知或者用户服务中。本示例主要讲解如何利用Java实现简单的邮件发送功能,包括单发和群发。我们将探讨以下几个关键知识点: 1. **...

    JAVA-mail-API.zip_Attachments

    Java Mail API 是一个用于处理电子邮件的开源库,它允许开发者在Java应用程序中发送、接收和管理邮件。在“JAVA-mail-API.zip_Attachments”这个压缩包中,主要的知识点是利用Java Mail API来发送带有附件的邮件。...

    java邮件发送源码

    Java邮件发送源码是用于在Java程序中实现电子邮件发送功能的代码示例。这个源码可能不包含图形用户界面(GUI),而是通过命令行或集成到其他应用中来执行。邮件发送功能通常基于SMTP(Simple Mail Transfer Protocol...

    java smtp发送邮件

    另外,一些邮件服务提供商可能需要通过OAuth2进行身份验证,这时需要使用特定的库,如JavaMail的Authenticator子类。 总的来说,Java SMTP发送邮件涉及JavaMail API的使用,SMTP服务器的配置,以及邮件内容的构建。...

    java 建议邮件发送

    在Java编程语言中,发送电子邮件是一项常见的任务,用于与用户进行通信或自动化工作流程。"java 建议邮件发送"这个主题涉及到如何使用Java API来构建和发送邮件。在这个场景下,描述提到该实现已经过测试,可以成功...

    java 发送邮件 Demo 项目源码

    JavaMail API 是Java平台上的一个开源库,它提供了发送和接收电子邮件的标准API。要使用JavaMail发送邮件,你需要在项目中引入相关的依赖,如`javax.mail`和`javax.mail-api`。 2. SMTP(Simple Mail Transfer ...

    java mail 邮件发送功能,自带jar包

    JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。在Java Mail中,你可以使用SMTP(简单邮件传输协议)或其他邮件传输协议来发送邮件。提供的jar包通常包括了 javax.mail 和 javax.mail.internet 等...

    发送普通文本格式的E-mail群发的java web源码

    在Java Web开发中,发送电子邮件是一项常见的任务,尤其在通知用户、发送验证码或者营销推广时。本示例源码着重于实现发送普通文本格式的E-mail群发功能,这对于许多Web应用程序来说是基础且必要的。下面我们将深入...

    Java邮件发送

    总结来说,Java邮件发送是Java开发者必备的一项技能,通过JavaMail API,我们可以轻松地构建和发送各种类型的电子邮件,同时支持复杂的邮件内容和安全连接。掌握这一技术,不仅可以提升工作效率,还能为用户提供更...

    java发送邮件

    Java Mail API是Java平台中用于处理电子邮件的主要工具,它提供了一套完整的API,使得开发者能够轻松地构建邮件发送和接收功能。下面我们将深入探讨如何使用Java进行邮件发送。 首先,Java Mail API需要两个核心库...

    java收发email算法

    在Java编程环境中,收发电子邮件是一项常见的任务,通常涉及到SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)协议。本教程将详细讲解如何使用Java来实现这一功能,以及涉及到的...

    基于Java语言的电子邮件系统的实现

    在Java编程语言中,构建一个电子邮件系统涉及到许多核心概念和技术。本系统主要依赖于JavaMail API,这是一个开源库,用于处理SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件服务。...

    java邮件发送工具代码.zip

    Java邮件发送工具是Java开发中常见的一种功能,用于在应用程序中发送电子邮件。在这个"java邮件发送工具代码.zip"压缩包中,包含两个核心文件:SendMail.java和MailAuthenticator.java,它们分别实现了邮件发送的...

    java发送QQ邮件!

    Java发送QQ邮件是一个常见的应用场景,尤其对于自动化通知或者系统间通信非常有用。在这个过程中,我们主要涉及以下几个核心知识点: 1. **SMTP(Simple Mail Transfer Protocol)**:SMTP是互联网上用于传输电子...

    java课程设计之发送邮件客户端,带发送附件

    在Java编程领域,发送电子邮件是一项常见的任务,尤其在课程设计中,它可以帮助学生理解网络通信和协议的应用。本文将深入探讨如何使用Java实现一个能够发送邮件的客户端,并附带发送附件的功能。 首先,我们需要...

    javamail

    JavaMail 是一个开源的 Java API,它允许 Java 程序员通过 SMTP、POP3、IMAP 协议发送、接收和管理电子邮件。这个压缩包包含的资源可能是一系列的教程、示例代码以及相关的文档,旨在帮助学习者掌握如何在 Java 应用...

    java mail api

    Java Mail API是Java平台上用于处理电子邮件的一套标准接口和实现,它允许开发人员在应用程序中发送、接收和管理邮件。这个API提供了丰富的功能,包括支持SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网...

    JavaMailTest

    JavaMailTest是一个典型的Java应用程序,用于演示如何使用JavaMail API发送电子邮件。在本文中,我们将深入探讨JavaMail API,理解其工作原理,并通过一个实际的JavaMailTest示例来学习如何编写邮件发送代码。 ...

Global site tag (gtag.js) - Google Analytics