博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
本地发送邮件步骤案例
阅读量:6700 次
发布时间:2019-06-25

本文共 5017 字,大约阅读时间需要 16 分钟。

hot3.png

案例环境:易邮邮件服务器+火狐邮件客户端-foxmail

首先设置好       易邮邮件服务器参数 根据自己的需求进行修改(点击设置)

web项目中  javaee自带mail包  可能会产生bug或者冲突。

        解决办法:删除原有的包  导入自己的jar包

MIME协议在java中

mime(mixed)=mime(related+附件)

mime(related)=mime(alternative)+文本

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

代码如下

package cn.gdpe.mail;

import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.junit.Test;
public class MailFirst {
    private static Properties prop=null;
    static {
        //1.邮件参数
        prop=new Properties();
        prop.put("mail.transport.protocol", "smtp");//设置协议
        prop.put("mail.smtp.host", "127.0.0.1");    //设置主机
        prop.put("mail.smtp.port", 25);                //设置端口
        prop.put("mail.smtp.auth", "true");            //是否验证
        prop.put("mail.debug", "true");                //调试模式
    }
    //普通文本
    public void testSendText(){
        
        try {
            //2.创建一个邮件的会话
            Session session=Session.getDefaultInstance(prop);
            //3.创建邮件体对象(整封邮件对象)
            MimeMessage mm=new MimeMessage(session);
            //3.1设置标题
            mm.setSubject("这是我的第一封邮件");
            //3.2设置时间
            mm.setSentDate(new Date());
            //3.3设置发件人
            mm.setSender(new InternetAddress("lisi@hdxy.com"));
            //3.4设置收件人
            mm.setRecipient(RecipientType.TO, new InternetAddress("zhangs@hdxy.com"));
            //3.5设置内容
//            mm.setText("你好");//简单文本内容 只能发普通文本
//            mm.setText("<a href='#'>111</a>");
            mm.setContent("<a href='#'>111</a>","text/html;charset=utf-8");//发带超链接的内容
            mm.saveChanges();
            //4.发送
            Transport trans=session.getTransport();
            trans.connect("lisi", "123");
            trans.sendMessage(mm, mm.getAllRecipients());
            trans.close();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        
    }
    //发图片
    @Test
    public void testSendImg(){
        
        try {
            //2.创建一个邮件的会话
            Session session=Session.getDefaultInstance(prop);
            //3.创建邮件体对象(整封邮件对象)
            MimeMessage mm=new MimeMessage(session);
            //3.1设置标题
            mm.setSubject("这是我的第一封邮件");
            //3.2设置时间
            mm.setSentDate(new Date());
            //3.3设置发件人
            mm.setSender(new InternetAddress("lisi@hdxy.com"));
            //3.4设置收件人
            mm.setRecipient(RecipientType.TO, new InternetAddress("zhangs@hdxy.com"));
            //3.5设置内容 内容为图片
            //3.5.1 构建一个多功能邮件
            MimeMultipart related=new MimeMultipart("related");
            //3.5.2 构建一个多功能邮件内容=左侧文本+右侧资源
            MimeBodyPart content=new MimeBodyPart();
            MimeBodyPart resource=new MimeBodyPart();
            //3.5.2 设置具体内容
            String path=MailFirst.class.getResource("1.jpg").getPath();
            DataSource dSource=new FileDataSource(new File(path));
            DataHandler handler=new DataHandler(dSource);
            resource.setDataHandler(handler);
            resource.setContentID("1.jpg");//设置ID  提供外面使用
            
            content.setContent("<img src='cid:1.jpg' />点击","text/html;charset=utf-8");
            
            related.addBodyPart(content);
            related.addBodyPart(resource);
            //3.5.3把构建的related放到MimeMessage中
            mm.setContent(related);
            
            mm.saveChanges();
            //4.发送
            Transport trans=session.getTransport();
            trans.connect("lisi", "123");
            trans.sendMessage(mm, mm.getAllRecipients());
            trans.close();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        
    }

    //设置带附件的还带图片的邮件

    public void testSendAttachment(){

        try {
            //2.创建一个邮件的会话
            Session session=Session.getDefaultInstance(prop);
            //3.创建邮件体对象(整封邮件对象)
            MimeMessage mm=new MimeMessage(session);
            //3.1设置标题
            mm.setSubject("这是我的第一封邮件");
            //3.2设置时间
            mm.setSentDate(new Date());
            //3.3设置发件人
            mm.setSender(new InternetAddress("lisi@hdxy.com"));
            //3.4设置收件人
            mm.setRecipient(RecipientType.TO, new InternetAddress("zhangs@hdxy.com"));
            //3.5设置内容 内容为图片
            //3.5.1 构建一个总邮件
            MimeMultipart mixed=new MimeMultipart("mixed");
            MimeBodyPart left=new MimeBodyPart();
            MimeBodyPart right=new MimeBodyPart();
            mixed.addBodyPart(left);
            mixed.addBodyPart(right);
            
            //3.5.1.0 设置附件内容
            String wordPath=MailFirst.class.getResource("readme.docx").getPath();
            DataSource wordSource=new FileDataSource(new File(wordPath));
            DataHandler wordhandler=new DataHandler(wordSource);
            right.setDataHandler(wordhandler);
            right.setFileName("readme");//设置附件名
            
            //3.5.1.1 构建一个多功能邮件
            MimeMultipart related=new MimeMultipart("related");
            left.setContent(related);
            //3.5.1.2 构建一个多功能邮件内容=左侧文本+右侧资源
            MimeBodyPart content=new MimeBodyPart();
            MimeBodyPart resource=new MimeBodyPart();
            //3.5.1.3 设置具体内容
            String photoPath=MailFirst.class.getResource("1.jpg").getPath();
            DataSource photoSource=new FileDataSource(new File(photoPath));
            DataHandler photohandler=new DataHandler(photoSource);
            resource.setDataHandler(photohandler);
            resource.setContentID("1.jpg");//设置ID  提供外面使用
            content.setContent("<img src='cid:1.jpg' />点击","text/html;charset=utf-8");
            
            related.addBodyPart(content);
            related.addBodyPart(resource);
            //3.5.3把构建的related放到MimeMessage中
            mm.setContent(mixed);
            
            mm.saveChanges();
            //4.发送
            Transport trans=session.getTransport();
            trans.connect("lisi", "123");
            trans.sendMessage(mm, mm.getAllRecipients());
            trans.close();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        
    }

}

转载于:https://my.oschina.net/chenliyong/blog/665797

你可能感兴趣的文章
Bzoj 2662: [BeiJing wc2012]冻结 dijkstra,堆,分层图,最短路
查看>>
数据库设计思考
查看>>
linux实例 批量修改图片文件名
查看>>
day15(mysql 的多表查询,事务)
查看>>
将iphone中的照片同步到电脑
查看>>
IOS
查看>>
【自己给自己题目做】:如何在Canvas上实现魔方效果
查看>>
beta冲刺第三天
查看>>
beta第二天
查看>>
工作中常用的但是又容易忽略的问题
查看>>
css特殊情况
查看>>
NOIP2018滚粗记
查看>>
mysql 中 all any some 用法
查看>>
目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结(转)
查看>>
后代选择器
查看>>
WebView性能优化--独立进程
查看>>
A. Case of the Zeros and Ones----解题报告
查看>>
洛谷 P2735 电网 Electric Fences Label:计算几何--皮克定理
查看>>
Vue + webpack 项目配置化、接口请求统一管理
查看>>
关于电脑的基础单词笔记
查看>>