JavaMail邮件的发送

邮件协议

SMTP:(Simple Mail TransferProtocol,简单邮件传输协议)发邮件协议;

POP3:(Post Office ProtocolVersion 3,邮局协议第3版)收邮件协议;

IMAP:(Internet Message Access Protocol,因特网消息访问协议)收发邮件协议


在使用telnet发邮件时,还需要自己来处理Base64编码的问题,但使用JavaMail就不必理会这些问题了,都由JavaMail来处理。

第一步:获得Session

Session session= Session.getInstance(Properties prop, Authenticator auth);

其中prop需要指定两个键值,一个是指定服务器主机名,另一个是指定是否需要认证!我们当然需要认证!

Properties prop= new Properties();

prop.setProperty(“mail.host”,“smtp.163.com”);//设置服务器主机名

prop.setProperty(“mail.smtp.auth”,“true”);//设置需要认证

 

其中Authenticator是一个接口表示认证器,即校验客户端的身份。我们需要自己来实现这个接口,实现这个接口需要使用账户和密码。

Authenticatorauth = new Authenticator() {

    public PasswordAuthenticationgetPasswordAuthentication () {

        new PasswordAuthentication(“邮箱用户名”,“邮箱密码”);//用户名和密码

}

};

通过上面的准备,现在可以获取得Session对象了:

Session session= Session.getInstance(prop, auth);

 

第二步:创建MimeMessage对象

创建MimeMessage需要使用Session对象来创建:

MimeMessage msg= new MimeMessage(session);

然后需要设置发信人地址、收信人地址、主题,以及邮件正文。

msg.setFrom(newInternetAddress(“发信人邮箱@163.com”));//设置发信人

msg.addRecipients(RecipientType.TO,“i收信人地址@qq.com,收信人地址@sina.com”);//设置多个收信人

msg.addRecipients(RecipientType.CC,“邮箱用户名@sohu.com,邮箱用户名@126.com”);//设置多个抄送

msg.addRecipients(RecipientType.BCC,”邮箱@hotmail.com”);//设置暗送

msg.setSubject(“这是一封测试邮件”);//设置主题(标题)

msg.setContent(“当然是hello world!”, “text/plain;charset=utf-8”);//设置正文

 

第三步:发送邮件

Transport.send(msg);//发送邮件

 

4 JavaMail发送带有附件的邮件

一封邮件可以包含正文、附件N个,所以正文与N个附件都是邮件的一个部份。

上面的hello world案例中,只是发送了带有正文的邮件!所以在调用setContent()方法时直接设置了正文,如果想发送带有附件邮件,那么需要设置邮件的内容为MimeMultiPart。

MimeMulitpartparts = new MimeMulitpart();//多部件对象,可以理解为是部件的集合

msg.setContent(parts);//设置邮件的内容为多部件内容。

然后我们需要把正文、N个附件创建为“主体部件”对象(MimeBodyPart),添加到MimeMuiltPart中即可。

MimeBodyPartpart1 = new MimeBodyPart();//创建一个部件

part1.setCotnent(“这是正文部分”, “text/html;charset=utf-8”);//给部件设置内容

parts.addBodyPart(part1);//把部件添加到部件集中。

 

下面我们创建一个附件:

MimeBodyPartpart2 = new MimeBodyPart();//创建一个部件

part2.attachFile(“F:\\a.jpg”);//设置附件

part2.setFileName(“hello.jpg”);//设置附件名称

parts.addBodyPart(part2);//把附件添加到部件集中

 

注意,如果在设置文件名称时,文件名称中包含了中文的话,那么需要使用MimeUitlity类来给中文编码:

part2.setFileName(MimeUitlity.encodeText(“美女.jpg”));


例子:

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

import org.junit.Test;

/**
 * 发邮件
 * @author Administrator
 *
 */
public class Demo1 {
    // 获取session
    public static Session getSession() {
        Properties props = new Properties();//创建一个属性集
        props.setProperty("mail.host", "smtp.163.com");//指定服务器的地址!
        props.setProperty("mail.smtp.auth", "true");//是否需要登录
        
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                // itcast_cxf,这是用户名,不能有@163.com后缀!!!
                // itcasticast 是密码!!!
                return new PasswordAuthentication("itcast_cxf", "itcastitcast");
            }
        };
        Session session = Session.getInstance(props, auth);
        return session;
    }
    
    /*
     * 发普通邮件
     */
    @Test
    public void fun1() throws AddressException, MessagingException {
        //  创建信息对象!
        MimeMessage msg = new MimeMessage(getSession());
        
        // 设置发件人
        msg.setFrom(new InternetAddress("itcast_cxf@163.com"));
        msg.addRecipients(RecipientType.TO, "itcast_cxf@126.com");//发件人
        msg.addRecipients(RecipientType.CC, "itcast_cxf@sina.com");//抄收
        msg.addRecipients(RecipientType.BCC, "itcast_cxf@sohu.com");//暗收
        
        msg.setSubject("你好!");
        msg.setContent("<a href='http://www.baidu.com'>这是一封来自itcast的测试邮件!</a>", "text/html;charset=utf-8");
        
        Transport.send(msg);//发邮件!
    }
    
    /*
     * 发带有附件的邮件
     */
    @Test
    public void fun2() throws AddressException, MessagingException, IOException {
        //  创建信息对象!
        MimeMessage msg = new MimeMessage(getSession());
        
        // 设置发件人
        msg.setFrom(new InternetAddress("itcast_cxf@163.com"));
        msg.addRecipients(RecipientType.TO, "itcast_cxf@126.com");//发件人
        msg.addRecipients(RecipientType.CC, "itcast_cxf@sina.com");//抄收
        msg.addRecipients(RecipientType.BCC, "itcast_cxf@sohu.com");//暗收
        
        msg.setSubject("你好!");
        
        // 创建了一个集合
        MimeMultipart partList = new MimeMultipart();
        msg.setContent(partList);//设置消息的内容为集合。
        
        // 向集合添加部件!
        // 创建部件
        MimeBodyPart part1 = new MimeBodyPart();
        // 设置部件的内容
        part1.setContent("<a href='http://www.baidu.com'>这是一封来自itcast的测试邮件!</a>", "text/html;charset=utf-8");
        // 把部分添加到集合
        partList.addBodyPart(part1);
        
        // 创建部分
        MimeBodyPart part2 = new MimeBodyPart();
        part2.attachFile(new File("F:/白冰.jpg"));//指定附件的数据
        // MimeUtility.encodeText()处理中文编码
        part2.setFileName(MimeUtility.encodeText("大美女.jpg"));//指定附件名称
        partList.addBodyPart(part2);
        
        Transport.send(msg);//发邮件!
    }
    
    @Test
    public void fun3() throws MessagingException, IOException {
        //  创建session
        Session session = MailUtils.createSession("smtp.163.com", "itcast_cxf", "itcastitcast");
        Mail mail = new Mail("itcast_cxf@163.com", "itcast_cxf@126.com", "这是一封垃圾邮件", "这是正文部分!");
        MailUtils.send(session, mail);
    }
    
    @Test
    public void fun4() throws MessagingException, IOException {
        //  创建session
        Session session = MailUtils.createSession("smtp.163.com", "itcast_cxf", "itcastitcast");
        // 创建消息类对象
        Mail mail = new Mail("itcast_cxf@163.com", "itcast_cxf@126.com", "这是一封垃圾邮件", "这是正文部分!");
        // 创建附件对象
        AttachBean ab1 = new AttachBean(new File("F:/白冰.jpg"), "小美女.jpg");
        AttachBean ab2 = new AttachBean(new File("F:/我的拍子.jpg"), "拍子.jpg");
        mail.addAttach(ab1);//把附件添加到消息对象中。
        mail.addAttach(ab2);//把附件添加到消息对象中。
        MailUtils.send(session, mail);
    }
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值