邮件发送

  • 收发邮件
    • 发邮件,从客户端把邮件发送到服务器
    • 收邮件,把邮件从服务器下载到客户端
    • 我们注册额邮件账户,就是在邮件服务器中注册的
    • 流程:这里写图片描述
  • 邮件协议
    • 与HTTP协议相同,收发邮件也需要有传输的协议
    • ==SMTP:(simple mail transfer protocol 简单邮件传输协议)发邮件协议==
    • ==POP3:(post office protocol version 3 , 邮局协议第三版)收邮件协议==
    • IMAP:(internet message access protocol ,因特网消息访问协议)收发邮件协议
  • 邮件收发过程
    这里写图片描述
    • 每个邮件服务器都由于smtp服务器和pop3服务器构成,其中SMTP服务器用来负责发邮件,pop3服务器用来接受邮件
    • 比如:通过163邮件发送到126,163服务器 是不会存储这封邮件的这里写图片描述
  • 邮件服务器名称
    • smtp服务器的端口号是==25==,服务器名称为smtp.xxx.xxx
    • pop3服务器的端口号是==110==,服务器的名称是pop3.xxx.xxx
    • 例如:163:smtp.163.com和pop3.163.com


import org.junit.Test;

import javax.mail.*;
import javax.mail.internet.*;
import java.io.IOException;
import java.util.Properties;

public class JavaMaile {
    @Test
    public void test1() throws MessagingException, IOException {
//        属性对象
        Properties properties = new Properties();
        properties.setProperty("mail.host","smtp.163.com");
        properties.setProperty("mail.smtp.auth" , "true");

//        通过Session的静态方法获取Session实例,Session负责联通
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("lien_wangyi@163.com", "lien19941225521");
            }
        });
//        通过Session获取message,message设置邮件
        MimeMessage message = new MimeMessage(session);
//        指定标题
        message.setSubject("这是我今天的测试邮件使用的是JavaMile工具");
//        指定发件人
        message.setFrom(new InternetAddress("lien_wangyi@163.com"));
//        指定收件人
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("274741937@qq.com"));
//        指定发送的内部
        message.setContent("着是我用来测试的邮件还希望不要拦截,不然会很伤心" , "text/html;charset=utf-8" );
        ////////发送邮件带附件的情况需要如下编码///////////
//        创建多部件主体
        MimeMultipart mimeMultipart = new MimeMultipart();
//        创建MimeBodyPort
        MimeBodyPart part1 = new MimeBodyPart();
//        设置部件1的内容
        part1.setContent("这次我发送的是带有附件的邮件,请注意查收" ,"text/html;charset=utf-8");
//        将部件1添加到多部分主体中
        mimeMultipart.addBodyPart(part1);
//        创建了多部件主体2
        MimeBodyPart part2 = new MimeBodyPart();
//        给部件2设置了一张图片
        part2.attachFile("D:/fileUpload/成功.jpg");
//        为了防止发送的文件名乱码使用内部的一个工具类进行编码
        part2.setFileName(MimeUtility.encodeText("成功.jpg"));
//        将部件2添加到多部件主体
        mimeMultipart.addBodyPart(part2);

//        讲多部件主体设置给邮件作为内容
        message.setContent(mimeMultipart);
        /////////////发送邮件带有附件的情况//////////////////
//       发送邮件
        Transport.send(message);
    }
    @Test
    public void Test2() throws MessagingException {
//        设置属性
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.auth" , "true");
//        设置连接
        Session session = Session.getInstance(properties);
//        通过连接获取到邮件主体
        MimeMessage mimeMessage = new MimeMessage(session);
//        设置发件人
        mimeMessage.setFrom(new InternetAddress("lien_wangyi@163.com"));
//        设置主题
        mimeMessage.setSubject("我又来测试");
//        设置邮件正文
        mimeMessage.setContent("连接不上是什么原因" ,"text/html;charset=utf-8");
//        获取邮件传输对象
        Transport transport = session.getTransport();
//        设置连接信息
        transport.connect("smtp.163.com",25, "lien_wangyi@163.com", "lien19941225521");
//        发送邮件
        transport.sendMessage(mimeMessage , InternetAddress.parse("274741937@qq.com"));
//        关闭连接
        transport.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值