java发送邮件

使用java mail forAndroid实现发送邮件

1.邮件发送协议smtp协议

  • smtp
    用户连接上邮件服务器之后,要想给它发送一封电子邮件,需要遵循一定的通讯规则,SMTP协议就是用来定义这种通讯规则的。因此,我们通常也把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。
  • pop3
    同样,用户若想从邮件服务器管理的电子邮箱当中接收一封电子邮件话,它连上邮件服务器后,也要遵循一定的通讯格式,POP3协议就是用来定义这种通讯格式的。因此,我们通常也把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。
  • 邮件发送过程


    java发送邮件_第1张图片
    image.png

1、[email protected] 用户写好一封Email发送到sohu的Smtp服务器。对应于上图的步骤①

2、sohu的Smtp服务器开始处理[email protected] 用户的请求,它会根据收件人的地址判断,当前收件人是不是自己管辖的用户,如果是,就直接将Email存放到为该收件人的分配的邮箱空间当中。sohu的Smtp服务器判断收件人地址发现,这一封Email的收件人[email protected] 是Sina的邮件服务器管理的,于是又将Email转发给Sina的Smtp服务器。对应于上图的步骤②

3、Sina的Smtp服务器开始处理sohu的Smtp服务器发送过来的Email,Sina的Smtp服务器根据收件人的地址判断,发现收件人自己管辖的用户,于是就直接将Email存放到为[email protected] 用户的分配的邮箱空间当中。对应于上图的步骤③。

4、[email protected] 用户将邮件发出去之后,就通知[email protected] 用户去收取。[email protected] 用户于是就连接上Sina的POP3服务器收取邮件,对应于上图的步骤④。

5、POP3服务器从[email protected] 用户的邮箱空间当中取出Email,对应于步骤⑤。

6、POP3服务器将取出来的Email发给[email protected] 用户,对应于步骤⑥。

package com.zp.helloandroid;

import android.widget.Toast;

import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


public class SendMail extends Thread{


    protected void sendMailMy(String text, String email, String pwd, String toMail) {
        Properties props = new Properties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.host", "smtphm.qiye.163.com");
        props.put("mail.smtp.auth", "false");
        props.put("mail.smtp.ssl.enable", "false");
        Session session = Session.getInstance(props, null);
        try {
            MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(email));
            msg.setRecipients(Message.RecipientType.TO, toMail);
            msg.setSubject("优衣库短信验证码");
            msg.setSentDate(new Date());
            msg.setText(text);
            Transport.send(msg,email,pwd);
            System.out.println("邮件发送成功");
        } catch (MessagingException mex) {
            System.out.println("send failed, exception: " + mex);

        }
    }
}

后续继续更新此文章。

你可能感兴趣的:(java发送邮件)