本地发送邮件步骤案例

案例环境:易邮邮件服务器+火狐邮件客户端-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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值