使用javaMail1.4发送email心得

使用Apache commons轻松发送Email 最近项目上需要使用javamail发送邮件,在网上搜索了一些资料,发现Apache common下有个Email组件,对javamail进行了封装,灰常的好用。      1.加入maven坐标依赖 org.apache.commons commons-email 1.3.3 阅读详情


    首先准备工作,我们得获取到javaMail1.4 的 jar 包 下载地址为:http://java.sun.com/products/javamail/downloads/index.html 这是最新的版本 1.4 版。 光有这个还不够,javaMail 发送邮件还需要依赖一个JavaBeans Activation Framework 来支持任意数据块的输入及相应处理。功能似乎不多,但目前许多浏览器和邮件工具中都能找到这种基本的 MIME 型支持。下载地址为:http://java.sun.com/products/archive/javabeans/jaf102.html 版本是1.0.2 ,解压activation.jar 与 mail.jar 放到你程序的类路径之中,现在我们所有的准备工作就算是完事了。

    javaMail1.4 想正确发送邮件,它会让我们去编写一个 发送服务器的验证类去继承Authenticator这个验证,下面给大家一个我写的例子,

/*
 * Authentic.java
 *
 * Created on 2007年10月20日, 上午10:08
 *冷漠大神
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package cn.CCmingzhou.mail;

import javax.mail.PasswordAuthentication;
import javax.mail.Authenticator;

/**
 *冷漠大神 qq:361619004
 *这里有默认的认证服务器 也是我邮箱地址 163 的
 * @author Angel
 */

public class Authentic extends Authenticator {
   
    /** Creates a new instance of Authentic */

    public Authentic() {
    }

    public Authentic(String name,String password)
    {
        this.setUsername(name);
        this.setPwd(password);
    }
    //这里是我重载的构造方法,你也可以不去重载它,但是这样写会有一定的灵活性

    private String username = "hackq";    //大多数是你邮件@前面的部分
    private String pwd = "*******";    //这里的username 是你要发送邮箱的帐号比如说我要用我的hackq@163.com 这
                                       //去往外发 那么你这里的username就填写 hackq 也就是说你@前面的部分
                                       //pwd就是你发送邮箱的密码啦,这里还没有涉及到收件箱的 别急在下边
   
   protected PasswordAuthentication getPasswordAuthentication() {
          return new PasswordAuthentication(getUsername(), getPwd());
         }
        //看到了吧protected PasswordAuthentication getPasswordAuthentication()这个方法是最重要的了,我们发送
        //邮件的时候就要靠它去验证我们的发送邮件服务器了
        //下面的get()和set() 不是必须的,可以不写,写了可以增加程序的灵活性
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
   
}

验证的类我们写完,下面写邮件的发送类

/*
 * mail.java
 *
 * Created on 2007年10月20日, 上午10:10
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package cn.CCmingzhou.mail;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.*;
import java.util.*;
import cn.CCmingzhou.mail.Authentic;
//注意这里的引用类 要把我们刚才写的那个Authentic 验证类引进来

/**
 *冷漠大神 qq:361619004
 * @author Angel
 */

public class Mail {
   
    /** Creates a new instance of mail */
    public Mail() {
    }
     /**
      *这个是默认的发送邮件方法,直接填写邮箱地址,主题,内容,当然这个是用我的email的服务器 也就是 smtp.163.com
      *参数说明 mailAress收件箱地址 title发送邮件的主题 content 发送邮件的内从 可以是超文本标记语言
      */
    public void sendMsg(String mailAddress,String title,String content)
    {
        boolean sessionDebug = false;
        InternetAddress[] address = null;
        try {
          // 设定所要用的Mail 服务器和所使用的传输协议
          java.util.Properties props = System.getProperties();
          props.put("mail.host","smtp.163.com");
          //这里是我们是用的 smtp
          props.put("mail.transport.protocol","smtp");
          props.put("mail.smtp.auth", "true");
          // 产生新的Session 服务

          Authentic auth = new Authentic();
         //看到没,这里我们就用到验证类了 注意我这里是创建的空参的构造方法 因为我在Authentic类里已经给了默认
         //值 也就是username=“hackq” pwd=“******”这里的****替换成你邮箱的密码

        Session mailSession = Session.getDefaultInstance(props, auth);
          mailSession.setDebug(sessionDebug);
          Message msg = new MimeMessage(mailSession); 
          // 设定传送邮件的发信人
          msg.setFrom(new InternetAddress("hackq@163.com"));
            // 设定传送邮件至收信人的信箱
          address = InternetAddress.parse(mailAddress,false);
          msg.setRecipients(Message.RecipientType.TO, address);
          // 设定信中的主题
          msg.setSubject(title);
          // 设定送信的时间
          //msg.setSentDate(new Date());
          msg.setDataHandler(new javax.activation.DataHandler("love","text/html"));
         //这里要注意一下activation用到它了吧 也就是说我们可以发送超文本的邮件 html格式 “love”参数你可以随
         //便指定为任意字符串
          // 设定传送信的MIME Type
                    // 送信
         msg.setContent(content,"text/html;charset=gb2312");
         //content 是你要发送的内容 也就是你调用sendMsg(String mailAddress,String title,String content)传
          //进来的的值
          Transport.send(msg);
          //out.println("邮件已顺利传送");
        }
            catch (MessagingException mex) {
              mex.printStackTrace();
            }
                   
    }
   
    /**
     *冷漠大神
     *重载的sendMsg()方法,这个方法的参数比较多,这里是设置自己的发送邮件的smtp服务器了 也就是说不用我的那个默认的资源
     *参数说明name 发送邮箱的帐号 password发送邮箱的密码 smtp 发送邮箱的stmp服务器地址 例smtp.163.com sendAddress 发送邮箱mail地址 inceptAddress 接收邮箱地址 title content 同上
     */
    public void sendMsg(String name,String password,String smtp,String sendAddress,String inceptAddress,String title,String content)
    {
        boolean sessionDebug = false;
        InternetAddress[] address = null;
        try {
          // 设定所要用的Mail 服务器和所使用的传输协议
          java.util.Properties props = System.getProperties();
          props.put("mail.host",smtp);
          props.put("mail.transport.protocol",smtp);
          props.put("mail.smtp.auth", "true");
          // 产生新的Session 服务

          Authentic auth = new Authentic(name,password);
        Session mailSession = Session.getDefaultInstance(props, auth);
          mailSession.setDebug(sessionDebug);
          Message msg = new MimeMessage(mailSession); 
          // 设定传送邮件的发信人
          msg.setFrom(new InternetAddress(sendAddress));
            // 设定传送邮件至收信人的信箱
          address = InternetAddress.parse(inceptAddress,false);
          msg.setRecipients(Message.RecipientType.TO, address);
          // 设定信中的主题
          msg.setSubject(title);
          // 设定送信的时间
          //msg.setSentDate(new Date());
          msg.setDataHandler(new javax.activation.DataHandler("love","text/html"));
          // 设定传送信的MIME Type
          //msg.setText(messageText);
          // 送信
         msg.setContent(content,"text/html;charset=gb2312");
          Transport.send(msg);
          //out.println("邮件已顺利传送");
        }
            catch (MessagingException mex) {
              mex.printStackTrace();
            }
                   
    }
  
}
看到了没,这样就可以调用javaMail1.4 在你的jsp程序里顺利的发送邮件了,注意 我重载的那个sendMsg()方法有很多参数,但是如果你调用那个方法会很灵活这就是为什么 我要在Authentic验证类里有个重载的构造方法 和对 username和pwd的get()和set() 就体现在这里个重载的方法里了,我在参数说明那里已经说的很明确了,也就是说你调用这么重载的sendMsg()的话 你可以任意更换你的 验证邮箱的服务器,看到了吧 是不是很灵活啊,这两个类你完全可以打成jar包,用的时候直接创建Mail类的一个对象 调用sendMsg()就可以实现在jsp程序里发送邮件的功能cn.CCmingzhou.mail 这个是我打的jar包,好啦,文章到此就结束啦,希望能和大家一起交流java技术!

                                                      作者:高秋 网名:冷漠大神

                                                          time:2007年11月2日

                                                          


 

Java Email(实现邮件发送) 阅读详情

相关推荐

JavaMail邮件功能实现:activation.jar与commons-email-1.1.jar使用指南

JavaMail API是Java平台的企业版中用于读取、编写和发送电子邮件的标准扩展。开发者可以利用JavaMail API构建和管理邮件应用,而不必处理底层的SMTP和IMAP协议细节。随着电子邮件在企业通信中的普及,JavaMail已经成为开发邮件客户端或服务器端邮件处理功能的不可或缺的工具。JavaMail的主要功能包括:- 支持POP3和IMAP协议,使得用户可以读取和管理服务器上的邮件;- 支持SMTP协议,让邮件发送变得简单;

weixin_36289742的博客 3745

java mail 1.4_JavaMail API 1.4.7邮件发送

下载oraclejavaMail API:下载:JavaMailAPI 1.4.7解压缩将lib文件夹中的jar文件全部拷贝到zhousp@ubuntu:~/Documents/eclipsedoc/workspace/javamail/javamailApi目录下。在PachageExplorer中,右击javamail,在BuildPath中选择ConfigureBuild PathAddEx...

weixin_34439193的博客 1513

Java mail-1.4.7 jar包

mail-1.4.7.jar,java发送邮件jar包。通过这个Jar包可实现基于Java的邮件发送,可以应用于Loadrunner或Jmeter中的测试报告邮件发送

java 1.7 找不到 javaxmail,找不到依赖项javax.mail:mail:1.4

After I imported a maven project in IntelliJ IDEA, there are two errors in the pom.xml file:"Failed to read artifact descriptor for javax.mail:mail:jar:1.4""Dependency javax.mail:mail:1.4 not found"Do...

weixin_39605345的博客 1143

javax.mail-1.4.4.jar(javamail实现用普通QQ邮箱发送邮件)

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

javax.mail.1.4.7.jar

java发送邮件的jar包. JavaMail,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。

javamail相关问题分析及解决

550 5.7.1 UNABLE TO RELAY:     原因:javax.mail包版本太旧,不支持NTLM验证     解决方法:换新版javamail java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream:     原因:MyEclipse中Java EE x Libraries 与javamail中的j...

Ajlzhu的博客 678

javax.mail-1.4.4.jar

通过java扩展包javax.mail-1.4.4.jar实现邮件发送功能。 import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart;

java实现简单的邮件发送

因为做项目要做一个邮件发送功能,所以在网上找了一下资料,现在做一份笔记,给自己备份学习。 做邮箱功能,要先导入一个jar包:javax.mail-1.4.4.jar;这个包可以到maven下载,也可以在我百度网盘下载。 我的百度网盘下载地址是: 链接:https://pan.baidu.com/s/1lzP8CsZsgdmueRZnz-U2fg 密码:1txq     package...

天大会下雨的博客 983

javamail1.4.5及activation1.1.1

国内可能打不开官网,所以在这里转载,提供下载。 JavaMail,提供给开发者处理电子邮件相关的编程接口。它是用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。 JAF,即为JavaBeans Activation Framework的缩写。Mail API 的所有版本都需要 JavaBeans Activation Framework 来支持任意数据块的输入及相应处理。功能似乎不多,但目前许多浏览器和邮件工具中都能找到这种基本的 MIME 型支持。activation.jar 文件就是JAF的框架jar包。

mail-1.4.1.jar

正规的mail-1.4.1.jar.在java发送mail时候必须使用的jar.

用JSP发送EMAIL(JavaMail简易实现版)

 在这里可以下载JAVAMAIL包 http://java.sun.com/products/javamail/在解压后,将activation.jar和mail.jar复制到 /WEB-INF/lib 目录后,JAVAMAIL便可以正常使用了下面sendmail.jsp 内容如下%@page contentType="text/html;charset=gb2312"%>JavaMa

SkyPirate的专栏 5393

Ubuntu20.04安装NVIDIA显卡驱动避坑指南:从.run文件到完美运行

本文详细介绍了在Ubuntu20.04系统上通过.run文件安装NVIDIA显卡驱动的完整流程和避坑技巧。从禁用Nouveau驱动、选择合适显示管理器到处理常见安装问题,提供了一套经过验证的解决方案,帮助用户顺利完成驱动安装并优化性能。

weixin_30776273的博客 602

JAVAMAIL 发Email案例

今天试了下JAVAMAIL的代码,郁闷到吐血,他们的邮箱都可以发送成功,我的邮箱就报 Java代码 javax.mail.AuthenticationFailedException       at javax.mail.Service.connect(Service.java:319)       at javax.mail.Service.connect(Servi

LN427鬼魅空间 2999

MATLAB仿真实战:双有源桥(DAB)变换器的扩展移相调制(EPS)全流程解析

本文提供了一份详细的MATLAB/Simulink仿真实战指南,手把手解析双有源桥(DAB)变换器在扩展移相调制(EPS)下的全流程建模。内容涵盖从核心原理、主功率电路搭建、EPS驱动信号生成,到仿真运行、波形分析及模型优化的完整步骤,旨在帮助工程师和研究者快速掌握DAB变换器的仿真与性能验证方法。

o4p5q6r7s的博客 503

Verilog十大基本功2(testbench的设计 文件读取和写入操作 源代码)

需求说明:Verilog设计基础 内容       :testbench的设计 读取文件 写入文件 来自       :时间的诗 十大基本功之 testbench 1. 激励的产生 对于 testbench 而言,端口应当和被测试的 module 一一对应。 端口分为 input,output 和 inout 类型产生激励信号的时候, input  对

时间的诗 5万+

JSP发送EMAIL

使用JSP发送email学习笔记在这里可以下载JAVAMAIL包 http://java.sun.com/products/javamail/在解压后,将activation.jar和mail.jar复制到 /WEB-INF/lib 目录后重启服务器,JAVAMAIL便可以正常使用了下面javamail.jsp 内容如下%@page contentType="text/html;charset=g

南方飘雪的专栏 1057

单细胞转录组肿瘤细胞识别:inferCNV与CopyKAT实战解析

单细胞转录组测序(scRNA-seq)是解析肿瘤微环境的重要技术,但如何从海量细胞中准确区分恶性细胞与正常细胞,始终是数据分析的关键难题。传统marker注释在异质性肿瘤中常失效,而基于拷贝数变异(CNV)的推断方法为这一问题提供了更稳健的解决路径。CNV通过检测染色体大片段的增益或缺失,可在无先验标记的情况下识别恶性细胞,尤其适合实体瘤研究。inferCNV利用染色体滑动窗口分析相对表达量,生成直观的CNV热图;CopyKAT则结合高斯混合模型对每个细胞直接分类,输出肿瘤/正常/非整倍体标签。本文从原理出

weixin_31236101的博客 249

Spring实战——使用Spring发送Email

注意:本文所列出的示例全部基于Spring4.2.6 本文记录基于Spring的email发送,关于使用JavaMail的邮件发送可以参考:https://blog.csdn.net/fancheng614/article/details/85040198 记得先添加JavaMail的相关依赖: <!-- JavaMail发送邮件Start --> <!-- ht...

下半夜的风 1829

SAP MM采购合同创建全解析:ME31K操作与后台逻辑

在SAP ERP的物料管理模块中,采购合同作为框架协议的核心,定义了企业与供应商之间的长期供货关系。它与采购订单不同,合同不直接产生收货或发票,而是为后续采购订单提供数据源。创建合同(事务码ME31K)时,需要区分数量合同与金额合同,并维护抬头、行项目、有效期、价格条件和税码等关键信息。SAP通过源确定机制在创建采购订单时自动匹配合同,同时审批策略、编码范围和输出类型也会影响合同的实际可用性。掌握合同创建逻辑,能有效解决采购订单无法带出合同、审批未触发、价格缺失等高频问题。从ME31K实操出发,系统梳理采购

weixin_30000735的博客 196

【NVIDIA驱动的顽固问题】---- /dev/sdax:clean,xxx/xxx files,xxx/xxx blocks ---- 最全解决方法

本文的意义在于整理总结关于此问题的全部解决方法,希望能给大家节约时间。

lc1852109的博客 3124

使用javamail实现发送邮件(QQ邮箱和163邮箱)

今日研究了一下java发送邮件的程序,有两种方法,一种是用java.mail;一种是用commons-email。 一、JAVA Mail是很常用的用于发送邮件的包,我们可以从这里获取,或者在maven中添加如下配置: com.sun.mail javax.mail 1.5.5 示例代码如下:package cn.mail.test; import java.uti

zouxucong的博客 9816

SPICE仿真软件:HSPICE_(20).HSPICE仿真结果的后处理

HSPICE仿真结果的后处理是一个多步骤的过程,包括读取结果文件、可视化、分析和导出。通过使用命令行工具、Python脚本和HSPICE内置工具,可以高效、准确地完成这些任务。Python脚本的灵活性和强大的数据分析能力使其成为后处理的理想选择。自动化处理可以显著提高工作效率,减少人为错误,而高级分析方法可以更深入地理解仿真结果,为电路设计提供有力支持。

kkchenjj的博客 1382
上一篇: love
下一篇: Jsp分页组件制作
hackq
博客等级 码龄20年 19粉丝 14原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值