基于java使用JavaMail发送邮件_java

一、邮件的相关概念

邮件协议。主要包括:

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:大配置  

 

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, mail
发送邮件
使用javamail发送邮件、java mail 发送邮件、javamail发送html邮件、javamail发送qq邮件、javamail发送模板邮件,以便于您获取更多的相关知识。

时间: 2025-01-30 16:16:47

基于java使用JavaMail发送邮件_java的相关文章

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

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

如何使用JavaMail发送邮件_java

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

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

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

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

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

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

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

使用JavaMail发送邮件的Java类

使用JavaMail发送邮件需要用到mail.jar和activtion.jar两个包. 该类实现了较完整的邮件发送功能,包括以HTML格式发送,添加附件和抄送人.下面是具体的代码: Mail.java: package cn.cgw.util.mail; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.ma

java中javamail发送带附件的邮件实现方法_java

本文实例讲述了java中javamail发送带附件的邮件实现方法.分享给大家供大家参考.具体分析如下: JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输,JavaMail是可选包,因此如果需要使用的话你需要首先从java官网上下载.目前最新版本是JavaMail1.5.0,下面我们来看看javamail发送带附件的邮件实例 mail.java 代码: 复制代码 代码如下: package mail;

java中javamail收发邮件实现方法_java

概述 1.邮件相关的标准 厂商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括: SMTP(Simple Mail Transfer Protocol) :即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. POP3(Post Office Protocol – Version 3) :即邮局协议版本 3 ,用于接收电子邮件的标准协议. IMAP(Internet Mail Access Protocol) :即 In

Java使用JavaMail API发送和接收邮件的代码示例_java

使用Javamail发送邮件,必需的jar包(请下载javamail的源文件,官方下载页:http://www.oracle.com/technetwork/java/javamail/index-138643.html): mailapi.jar.定义了收发邮件所使用到的接口API: smtp.jar.包含了发送邮件使用到的类: pop3.jar.包含了收邮件使用到的类: 我们通常发送邮件使用的协议是smtp协议,接受邮件使用的协议是pop3协议.或者,我们直接将mail.jar加入到工程,这