基于java使用JavaMail发送邮件

一、邮件的相关概念

邮件协议。主要包括:

SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件

POP3协议:Post Office Protocol 3,即邮局协议的第三个版本,用于接收邮件

IMAP协议:Internet Message Access Protocol,即互联网消息访问协议,是POP3的替代协议

--------------------------------------------------------------------------------

 二、搭建James邮件服务器

James是Apache的一个开源项目,纯Java实现

搭建James服务器

① 下载apache-james-2.3.2.zip解压

② 运行bin目录下的run.bat即可启动服务器[Telnet  localhost 4555]

③ 通过apps\james\SAR-INF\config.xml配置服务器

注:先到bin下run一道。 放如非中文目录, 得再控制面板开启Telnet客户端

--------------------------------------------------------------------------------

 三、安装OutLook[邮件客户端]

产品秘钥:PQDV9-GPDV4-CRM4D-PHDTH-4M2MT

创建用户账号

一、使用telnet连接James的Remote Administration Tool

二、以管理员身份登录

三、使用adduser命令添加用户

--------------------------------------------------------------------------------

四、配置outlook邮件客户端

为了方便查看,可以配置Microsoft Outlook邮件客户端,保证James邮件服务器是启动状态,启动Microsoft Outlook.

选择“工具”->“选项”,打开“选项”面板。选择“邮件设置”并点击“电子邮件账户”,打开“账号设置”面板。在“电子邮件”选项卡下新建邮件账户

--------------------------------------------------------------------------------

五、案例[搭建James邮件服务器]

需求说明:

在本机搭建James邮件服务器,自定义服务器的名称。

创建两个测试用户。

在Microsoft Outlook中配置其中一个测试用户为Outlook邮件账户

--------------------------------------------------------------------------------

 六、使用JavaMail发送电子邮件(案例)

需求:

使用JavaMail技术,实现从A账户给B账户发送一封电子邮件,标题为“会议通知”,邮件内容为“XX你好!请于明天下午16:00 准时到B01会议室召开技术讨论会。”通过Outlook 客户端查看邮件程序发送的邮件是否发送成功

关键代码:

创建一个类EmailAuthenticator并继承自Authenticator,并植入用户名和密码

创建Mail类设置邮件信息:

public class Mail {

 private String mailServer,from,to,mailSubject,mailContent;

 private String username,password;

 public Mail(){

   //设置邮件信息

   //进行认证登录的用户名

   username="hq@mail.com";

   //认证密码

   password="hq";

   //认证的邮箱对应的邮件服务器

   mailServer="192.168.17.176";

   //发件人信息

   from="wj";

   //收件人信息

   to="wj@mail.com";

   //邮件标题

   mailSubject="我们都是好孩子333";

   //邮件内容

   mailContent="这是一封测试邮件!如有雷同,纯属不可能";

 }

 //设置邮件服务器

 @SuppressWarnings("static-access")

public void send(){

   Properties prop=System.getProperties();

   //指定邮件server

   prop.put("mail.smtp.host", mailServer);

   //是否开启认证

   prop.put("mail.smtp.auth", "true");

   //smtp协议的

   prop.put("mail.smtp.port", "25");

   //产生Session服务

   EmailAuthenticator mailauth=new EmailAuthenticator(username, password);

   Session mailSession=Session.getInstance(prop,(Authenticator)mailauth);

    try {

      //封装Message对象

      Message message=new MimeMessage(mailSession);

      message.setFrom(new InternetAddress(from)); //发件人

      message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//收件人

      message.setSubject(mailSubject);

      //设置内容(设置字符集处理乱码问题)

      message.setContent(mailContent,"text/html;charset=gbk");

      message.setSentDate(new Date());

      //创建Transport实例,发送邮件

      Transport tran=mailSession.getTransport("smtp");

      tran.send(message,message.getAllRecipients());

      tran.close();

    } catch (Exception e) {

      e.printStackTrace();

    }

 }

测试类:  

public class MyTest {

  public static void main(String[] args) {

    Mail mail=new Mail();

    mail.send();

    System.out.println("success!");

  }
}

--------------------------------------------------------------------------------

七、发送带附件的Mail

public class MailWithAttachment {

  private JavaMailSender mailSender; //必须使用 JavaMailSender

  public void setMailSender(JavaMailSender mailSender) {

    this.mailSender = mailSender;

  }

  public void send() throws MessagingException,IOException{

    MimeMessage mimeMessage = mailSender.createMimeMessage();

    MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");

    helper.setFrom("hq@mail.com");

    helper.setTo("wj@mail.com");

    helper.setSubject("哈哈哈");

    helper.setText("每日一笑,开开心心!!!");

    //添加附件1

    ClassPathResource file1 = new ClassPathResource(

                    "/cn/bdqn/attachfiles/test.doc");

    helper.addAttachment(file1.getFilename(), file1.getFile());

    //添加附件2:附件的文件名为中文时,需要对文件名进行编码转换,解决乱码问题

    ClassPathResource file2 = new ClassPathResource(

                    "/cn/bdqn/attachfiles/附件测试文件.doc");

    helper.addAttachment(MimeUtility.encodeWord(file2.getFilename()),file2.getFile());

    mailSender.send(mimeMessage);

  }

}

测试类:  

public class MailTest {

  public static void main(String[] args){

    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

    /*测试带附件的邮件*/

    try{

      MailWithAttachment mailWithAttach = (MailWithAttachment)context.getBean("mailWithAttachment");

      mailWithAttach.send();

    }catch(Exception e){

      System.out.print(e.toString());

    }

  }

}

applicationContext.xml:大配置  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • javamail 发送邮件的实例代码分享

    注意:要先导入javamail的mail.jar包.以下三段代码是我的全部代码,朋友们如果想用,直接复制即可.第一个类:MailSenderInfo.java 复制代码 代码如下: package com.util.mail;import java.util.Properties;/** * 发送邮件需要使用的基本信息 */public class MailSenderInfo {    //发送邮件的服务器的IP和端口    private String mailServerHost;   

  • 基于SSM框架+Javamail发送邮件的代码实例

    本篇介绍基于SSM框架(Spring4.0+SpringMVC+Mybatis)组合的Javamail应用,邮箱的话基于腾讯的QQ邮箱,其实也是Foxmail邮箱 先要了解一下SMTP协议和SSL加密 SMTP:称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效.可靠的邮件传输.SMTP是一种请求响应的协议,也就是客户机向远程服务器发送请求,服务器响应,监听端口是25,所以其工作模式有两种:发送SMTP,接收SMTP. SSL加密:用来保障浏

  • 如何使用JavaMail发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能,用户注册成功之后,就将用户的注册信息以Email的形式发送到用户的注册邮箱当中,实现发送邮件功能就得借助于JavaMail了. 一.搭建开发环境 1.1.创建Web项目 1.2.用户注册的Jsp页面 register.jsp <%@ page language="java" pag

  • Java基于JavaMail实现向QQ邮箱发送邮件

    最近项目在做新闻爬虫,想实现这个功能:爬虫某个页面失败后,把这个页面的 url 发到邮箱.最终实现的效果图如下,后期可以加上过滤标签.失败状态码等,方便分类搜索异常. 开发人员可以根据邮件里的 url 和堆栈信息,分析爬虫失败的原因. 是不是服务器 down 了? 还是爬虫的 Dom 解析没有解析到内容? 还是正则表达式对于这个页面不适用? 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 SMTP 服务 注意开启完之后,QQ 邮箱会生成一个授权码,在代码里连接邮箱使用这个授权码而不是原

  • JavaMail入门教程之发送邮件(3)

    JavaMail API中定义了一个java.mail.Transport类,它专门用于执行邮件发送任务,这个类的实例对象封装了某种邮件发送协议的底层实施细节,应用程序调用这个类中的方法就可以把Message对象中封装的邮件数据发送到指定的SMTP服务器.使用JavaMail发送邮件时设计到的主要API之间的工作关系如下所示: 1.从Session对象中获得实现了某种邮件发送协议的Transport对象: 2.使用Session对象创建Message对象,并调用Message对象的方法封装邮件数

  • Java使用JavaMail发送邮件的方法

    本文实例讲述了Java使用JavaMail发送邮件的方法.分享给大家供大家参考,具体如下: 代码一.Email_Autherticator.java 服务器验证代码 import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class Email_Autherticator extends Authenticator { String username = "你邮箱的用户名"; S

  • 使用JavaMail发送邮件保证成功的方法

    前言 相信大家应该都知道,一般的开放的api给我们调用都会有个返回值或者状态码,来告诉我们执行成功与否.但是JavaMail却没有提供这样一个返回值. 所以在调用JavaMail发送邮件的时候,我们只能通过catch异常的方式来判断邮件是否发送成功.我们认为只要没有异常发生,那么邮件就能发送成功.那么我们就来分析一下JavaMail为什么没有提供返回值,和通过异常判断邮件发送成功状态是否靠谱. JavaMail发送邮件原理 在使用JavaMail进行发送邮件时,我们必须提供一个邮件会话.创建邮件

  • JavaWeb中JavaMail创建邮件和发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 --用于指明发件人 to字段     --用于指明收件人 subject字段  --用于说明邮件主题 cc字段    -- 抄送,将邮件发送给收件人的同时抄送给另一个收件人,收件人可以看到邮件抄送给了谁 bcc字段 -- 密送,将邮件发送给收件人的同时将邮件秘密发送给另一个收件人,收件人无法看到邮

  • JavaMail发送(带图片和附件)和接收邮件实现详解(四)

    好了,进入这个系列教程最主要的步骤了,前面邮件的理论知识我们都了解了,那么这篇博客我们将用代码完成邮件的发送.这在实际项目中应用的非常广泛,比如注册需要发送邮件进行账号激活,再比如OA项目中利用邮件进行任务提醒等等.我们这里所讲的就是利用 JavaMail 完成邮件的发送和接收功能. PS:本篇博客源码下载链接:https://github.com/YSOcean/cnblogs 1.JavaMail 介绍 JavaMail 是sun公司(现以被甲骨文收购)为方便Java开发人员在应用程序中实现

  • JavaWeb中使用JavaMail实现发送邮件功能实例详解

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能,用户注册成功之后,就将用户的注册信息以Email的形式发送到用户的注册邮箱当中,实现发送邮件功能就得借助于JavaMail了. 一.搭建开发环境 1.1.创建Web项目 1.2.用户注册的Jsp页面 register.jsp <%@ page language="java" pag

随机推荐