首页 > 代码库 > JavaWeb基础—邮件发送

JavaWeb基础—邮件发送

JavaMail-java提供的一组API,用来收发邮件

中间有个邮件服务器:
客户端发给邮件服务器,另外一收件客户端从邮件服务器下载
(最稳的还是163,QQ有点不靠谱)

SMTP协议 port 25
SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。
它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。
SMTP 协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
SMTP 服务器就是遵循SMTP协议的发送邮件服务器。SMTP认证,简单地说就是要求必须在提供了账户名
和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。增加 SMTP 认证的
目的是为了使用户避免受到垃圾邮件的侵扰。
SMTP[2] 已是事实上的E-Mail传输的标准。

POP协议 POP3邮局协议第三版 port 110
POP邮局协议负责从邮件服务器中检索电子邮件。

IMAP协议
互联网信息访问协议(IMAP)是一种优于POP的新协议。

(了解)teInet发邮件(BASE64 sun包下的,java javax的底层依赖,不建议使用,报warning)
使用禁止的类略,百度。

使用JavaMail发送:第一步为导包,需要两个包:mail.jar_activation.jar
核心类
Session :与Connection类似,但不同于web的HttpSession 步骤偏多
MimeMessage :邮件对象
TransPort :用来发邮件
发带附件与不带附件(多部件主体)MimeMultiPart MimeBodyPart

MailUtils工具类 itcast-tool

给出一个小例子:

这是jar包

  技术分享

package cn.itcaat.mail;

import java.io.File;
import java.io.IOException;
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.MimeMessage;

import org.junit.Test;

import cn.itcast.mail.AttachBean;
import cn.itcast.mail.Mail;
import cn.itcast.mail.MailUtils;

/**
 * 测试无附件的发邮件的演示
 * @author jiangbei01
 *
 */
public class Demo01 {
    @Test
    public void fun1() throws AddressException, MessagingException{
        /*
         * 1.得到session
         */
        Properties props = new Properties();
        //主机名
        props.setProperty("mail.host", "smtp.163.com");
        //是否需要认证
        props.setProperty("mail.smtp.auth", "true");
        Authenticator auth = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                //返回值类型具有一般构造器
                return new PasswordAuthentication("ttbeifen1", "tt2924");
            }
        };
        Session session = Session.getInstance(props, auth);
        //得到邮件对象
        MimeMessage msg = new MimeMessage(session);
        //抄送暗送此处略
        msg.setFrom(new InternetAddress("ttbeifen1@163.com"));//发件人
        msg.setRecipients(RecipientType.TO, "775992759@qq.com");//收件人
        msg.setSubject("这是来自DAY22的测试");
        msg.setContent("炸鸡和啤酒", "text/html;charset=utf-8");
        
        //发送
        Transport.send(msg);
        
    }
    /**
     * 使用小工具类,导的包itcast-tool
     * @throws IOException 
     * @throws MessagingException 
     */
    @Test
    public void fun2() throws MessagingException, IOException{
        //得到session
        Session session = MailUtils.createSession("smtp.163.com", "ttbeifen1", "tt2924");
        //得到邮件对象 参数依次是发件人 ,收件人,主题,正文
        Mail mail = new Mail("ttbeifen1@163.com","775992759@qq.com","这是主题","这是正文");
        //添加附件到mail
        AttachBean attachbean = new AttachBean(new File("F:/2.jpg"), "蝴蝶谷");
        mail.addAttach(attachbean);
        //发送
        MailUtils.send(session, mail);
    }
}

 

JavaWeb基础—邮件发送