java发送邮件示例讲解_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);

 }

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

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

时间: 2024-10-01 16:52:38

java发送邮件示例讲解_java的相关文章

java selenium操作弹出对话框示例讲解_java

Web 开发人员通常需要利用JavaScript弹出对话框来给用户一些信息提示, 包括以下几种类型 阅读目录 对话框类型 测试页面 Selenium 操作对话框的代码 对话框类型 1.  警告框: 用于提示用户相关信息的验证结果, 错误或警告等 2. 提示框: 用于提示用户在当前对话框中输入数据,一般需要用户单击取消或者确认按钮 3. 确认框: 用于提示用户确认或者取消某个操作,一般需要用户单击取消或者确认按钮 测试页面 用如下页面为例进行讲解, 包括了警告框,提示框,确认框 http://si

java和matlab画多边形闭合折线图示例讲解_java

1.使用matlab作闭合多边形图 没有找到直接画多边形的函数,只能是将各个点的坐标保存在数组中,将一个点与其相邻的点相连,并将最后一个点与第一个点连接.下面是一个示例的.m文件: 复制代码 代码如下: clear;clc;a=[0 2 4 6 8 10 12 14;0 2 1 4 6 6 5 7];  %要连接的点坐标 x;y[n,m]=size(a);for i=1:m-1;    line([a(1,i),a(1,i+1)],[a(2,i),a(2,i+1)]);  %连接节点line([

java 四舍五入使java保留2位小数示例讲解_java

复制代码 代码如下: /* * 测试四舍五入 */package com.icer.test; /** * * @author Hanbin */public class MyRound {    public static void main(String[] args) {        double num = 3.23562;        double number = 0;        number = new MyRound().myRound(num,2);        Sy

java构造函数示例(构造方法)_java

TestCar.java 复制代码 代码如下: public class TestCar {    public static void main(String[] args) {        Car c1 = new Car();        c1.color = "red";        c1.brand = "xxx";//如果这辆汽车有很多属性,这样一一赋值不是很麻烦?有没有办法一生产出来就设定它的属性(初始化)吗?有~~~看下面          

java观感示例分享_java

复制代码 代码如下: package com.hongyuan.gui; import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.SwingUtilities;i

多个java泛型示例分享_java

1.泛型类 1.1普通泛型 复制代码 代码如下: package test.lujianing;/** * 泛型类 * @param <T> */class Test<T>{    private T obj;    public void setValue(T obj){        this.obj =obj;    }    public T getValue(){        System.out.println(obj.getClass().getName());  

java数组排序示例分享_java

类:Nums    权限:public方法:main    权限:public参数:nums,i,j,num;参数介绍:nums,数据类型 int[] ,用来存储 int 型的一系列数组:i,数据类型 int ,作为 for 循环的循环变量,存储排序比较的轮数:j,数据类型 int ,作为 for 循环的循环变量,存储该轮排序比较的次数:num,数据类型 int ,作为两值互换的第三方变量.方法功能:定义一个 int[] 数组:设置一个循环变量 i ,记录比较轮数:设置一个循环变量 j ,记录该

java多线程-同步块实例讲解_java

java多线程-同步块 Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java 同步块用来避免竞争.本文介绍以下内容: Java 同步关键字(synchronzied) 实例方法同步 静态方法同步 实例方法中同步块 静态方法中同步块 Java 同步示例 Java 同步关键字(synchronized) Java 中的同步块用 synchronized 标记.同步块在 Java 中是同步在某个对象上.所有同步在一个对象上的同步块在同时只能被一个线程进入并执

Java Web应用程序实现基础的文件下载功能的实例讲解_java

基础思路:之前的思路一直是弹出一个框问用户想要存放文件的位置,然后我再生成个文件放到那.然而我这个想法并没有成功. 点击链接来下载文件的方式很简便,后台把文件流输出来,通过浏览器实现下载功能,包括询问位置与文件存放,大多数浏览器会配置一个固定位置,不一定每次都问. 前端就非常简单了,一个<a>标签,href="后台方法地址",如果你的需求不能直接用超链接方式,可以在js里写 window.location.href ="后台方法地址". 这样跳转到后台方