java发送邮件示例讲解

本文实例讲解了java发邮件的详细过程,供大家参考,具体内容如下

1、邮件协议

发邮件的:SMTP (Simple Mail Transport  Protocal)

收邮件的协议:pop3 (Post Office Protocal 3)

IMAP 新协议 发邮件也可以收邮件。

(一步步的与服务器交互)

SMTP :

2、收发邮件的过程:

一般情况下,smtp和pop3是两个服务器(主机)。

Smtp邮件的端口为25。

POP3 端口 为110。

发邮件示例

1)、安装foxmail:

2)、发邮件时,要对用户名和密码进行base64编码

 //对用户名和密码进行base64编码

 @Test

 public void base64(){

  String name = "wj_leaf12345";

  String pwd = "1qaz2wsx";

  BASE64Encoder en = new BASE64Encoder();

  name = en.encode(name.getBytes());

  pwd = en.encode(pwd.getBytes());

  System.err.println(name);

  System.err.println(pwd);

 }

3)、通过java代码发邮件

用java发邮件,必须要导入新的包

mail.jar – 发邮件的核心包

activation.jar – 对用户和密码加密.

在mail.jar中有三个核心类:

Javax.mail.Session – 是指与邮件服务器会话。整个项目中只要一个就可以了.

Javax.mail.Message(接口) —准备发送数据信息。

MimeMessage - 可以设置类型的数据信息。

Transport – 它拥有一个方法可以发送Message。

第一步:导入两个jar包

第二步:发简单的邮件

public void sendMail() throws Exception{

  //第一步:声明properties对象放信息

  Properties prop = new Properties();

  //设置连接哪一台服务器

  prop.setProperty("mail.host","smtp.126.com");

  //设置是否验证

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

  //第二步:声明用户名和密码

  Authenticator auth = new Authenticator() {

   //此访求返回用户和密码的对象

   public PasswordAuthentication getPasswordAuthentication() {

    PasswordAuthentication pa =

      new PasswordAuthentication("aaa", "sss");

    return pa;

   }

  };

  ////第二步:获取Session对象

  Session session =

    Session.getDefaultInstance(prop,auth);

  //设置session的调试模式

  session.setDebug(true);

  //第三步:声明信息

  MimeMessage mm1 =

    new MimeMessage(session);

  //第四步:设置发件人email

  Address from = new InternetAddress("wj@126.com");

  mm1.setFrom(from);

  //第五步:设置收件人

  mm1.setRecipient(RecipientType.TO,new InternetAddress("wj@163.com"));

  mm1.setRecipient(RecipientType.CC, new InternetAddress("554@qq.com"));

  mm1.setRecipient(RecipientType.BCC, new InternetAddress("wj@ss.cn"));

  //第六步:设置主题

  mm1.setSubject("这是用Java发的邮件3");

  mm1.setContent("你好,这是用java发的邮件,3333再试一下", "text/plain;charset=UTF-8");

  //第七步:

  Transport.send(mm1);

 }

第三步:v发带有超连接的邮件

mm1.setSubject("这是用Java发的邮件sfasdf3");

  mm1.setContent("你好,这是用java发的邮件,<a href='http://www.baidu.com'>百度</a>", "text/html;charset=UTF-8" );

  //第七步:

  Transport.send(mm1);

第四步:符件的邮件

public void sendFile() throws Exception{

  Properties p = new Properties();

  p.setProperty("mail.host","smtp.163.com");

  p.setProperty("mail.smtp.auth","true");

  Session s = Session.getDefaultInstance(p,new Authenticator() {

   @Override

   public PasswordAuthentication getPasswordAuthentication() {

    return new PasswordAuthentication("ww", "123");

   }

  });

  s.setDebug(true);

  //声明MimeMessage

  MimeMessage msg = new MimeMessage(s);

  msg.setFrom(new InternetAddress("ww@163.com"));

  msg.setRecipient(RecipientType.TO, new InternetAddress("ww@126.com"));

  msg.setSubject("图片的");

  //第一步:声明多处理的Part

  MimeMultipart mm = new MimeMultipart();

  //第二步:声明

  MimeBodyPart body1 = new MimeBodyPart();

  //第三步:设置符件

  DataSource ds = new FileDataSource(new File("./img/a.jpg"));

  DataHandler dh = new DataHandler(ds);

  body1.setDataHandler(dh);

  //必须要设置名称

  body1.setFileName(MimeUtility.encodeText("美女.jpg"));

  MimeBodyPart body2 = new MimeBodyPart();

  //第三步:设置符件

  DataSource ds2 = new FileDataSource(new File("./img/b.jpg"));

  DataHandler dh2 = new DataHandler(ds2);

  body2.setDataHandler(dh2);

  //必须要设置名称

  body2.setFileName(MimeUtility.encodeText("美女2.jpg"));

  MimeBodyPart body3 = new MimeBodyPart();

  //第三步:设置符件

  DataSource ds3 = new FileDataSource(new File("./img/m.mp3"));

  DataHandler dh3 = new DataHandler(ds3);

  body3.setDataHandler(dh3);

  //必须要设置名称

  body3.setFileName(MimeUtility.encodeText("世纪末.mp3"));

  //将body1添加到mm

  mm.addBodyPart(body1);

  mm.addBodyPart(body2);

  mm.addBodyPart(body3);

  msg.setContent(mm);

  //发送

  Transport.send(msg);

 }

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

(0)

相关推荐

  • Java mail 发送邮件的具体实例

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接复制即可.jar包因为我不知道怎么传到javaeye上,所以朋友们回去自己打吧. 我的代码有三个类: 第一个类:MailSenderInfo.java 复制代码 代码如下: package com.util.mail;/** * 发送邮件需要使用的基本信息 */ import java.util.P

  • Java Mail与Apache Mail发送邮件示例

    一.邮件简介 一封邮件由很多信息构成,主要的信息如下,其他的暂时不考虑,例如抄送等: 1.收件人:收件人的邮箱地址,例如xxx@xx.com 2.收件人姓名:大部分的邮件显示时都会显示,例如loadfate 779554589@qq.com 3.发件人:发件人的邮箱地址 4.发件人姓名: 5.主题:邮件的标题 6.内容及附件:邮件的主要内容 二.使用Java发邮件的通用步骤 一般的项目中没有单独的邮件服务器,一般情况下都是使用别人的服务器. 1.设置smtp服务器:不同的邮件服务器有不同的地址,

  • java发送邮件的具体实现

    首先是继承自javax.mail.Authenticator的一个具体类.getPasswordAuthentication()方法也就是构建一个PasswordAuthentication对象并返回,有点费解JAVA Mail这样的设计意图,可能javax.mail.Authenticator为我们提供了附加的保证安全的验证措施吧. 复制代码 代码如下: package com.mzule.simplemail; import javax.mail.Authenticator;import j

  • java实现163邮箱发送邮件到qq邮箱成功案例

    下载和上传附件.发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,现在终于成功以163邮箱发送邮件到qq邮箱,以下是相关代码,具体解释可以参考代码中注释: package test; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; import java.ut

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

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

  • Java发送邮件遇到的常见需求汇总

    基于SMTP发送一个简单的邮件 首先,需要一个认证器: package No001_基于SMTP的文本邮件; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class SimpleAuthenticator extends Authenticator { private String username; private String password; public Simple

  • java实现基于SMTP发送邮件的方法

    本文实例讲述了java实现基于SMTP发送邮件的方法.分享给大家供大家参考.具体实现方法如下: import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Tra

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

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

  • java邮件发送的实现

    邮件是在日常生活中,这篇文章主要介绍了java实现基于SMTP发送邮件的方法,实例分析了java基于SMTP服务发送邮件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下. 1.写一个 MailSendProper 类封装需要的属性 import java.util.Properties; public class MailSendProper { private String Host ; //发送邮件服务器的ip private String Port ; //发送邮件服务器的端口号 p

  • 如何使用JavaMail发送邮件

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

  • java使用Socket实现SMTP协议发送邮件

    本文实例为大家分享了java 利用Socket实现SMTP协议发送邮件的具体代码,供大家参考,具体内容如下 package mail; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; impo

  • Java发送邮件javax.mail的实现方法

    直接上源码: 1. 邮件的基本信息(方便就直接设置为静态了) 下面最好是做为一个javabean package com.lgf.Email; import java.util.Date; public class EmailMessage { /** * 邮件的信息,可以自己进行设置. * 为了方便直接全部设置为静态 */ // 收件人邮箱 public static String TO = "xxx@xxx.com"; // 发件人邮箱 public static String F

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

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

  • Java实现发送邮件功能时碰到的坑

    之前用163邮箱发邮件时明明是成功的,但是使用中国移动自己的邮箱时,无论如何在linux服务器中都发送不成功,一开始报如下错误: javax.mail.MessagingException: Unknown SMTP host: mail.chinamobilesz.com at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1959) ~ [mail-1.4.7.jar:1.4.7] at com.sun.mail.

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

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

随机推荐