Java发送邮件

使用之前必须联网!!!!!!

一、 导入jar包

<!-- email依赖 -->
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.5.0-b01</version>
		</dependency>
	</dependencies>

二、 开通邮箱的第三方服务(IMAP/SMTP服务),我这里是QQ邮箱为例

三、 创建email工具类

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import java.util.Random;

@Component
public class EmailUtil {
    private static Random random = new Random();
    /*验证码*/
    private static String captcha="";
    //发件人的邮箱和密码,由于我使用的是QQ邮箱,所以密码是第三方服务(IMAP/SMTP服务)的授权码
    public static String myEmailAccount = "发送人的邮箱地址";
    public static String myEmailPassword = "发送人的邮箱密码或授权码";//就算不需要授权码,也是要开通第三方服务的哟
    // 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com
    public static String myEmailSMTPHost = "smtp.qq.com";

    /*发送邮件,并且把验证码返回*/
    public static String sendEmail(String receiveMail) throws Exception {
        /*1.创建连接邮件服务器的参数配置*/
        Properties properties = new Properties();//创建一个配置类的对象
        properties.setProperty("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)
        properties.setProperty("mail.smtp.host", myEmailSMTPHost);   // 发件人的邮箱的 SMTP 服务器地址
        properties.setProperty("mail.smtp.auth", "true");            // 需要请求认证
        final String smtpPort = "465";//服务器端口
        properties.setProperty("mail.smtp.port", smtpPort);
        properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        properties.setProperty("mail.smtp.socketFactory.fallback", "false");
        properties.setProperty("mail.smtp.socketFactory.port", smtpPort);
        // 2. 根据配置创建会话对象, 用于和邮件服务器交互
        Session session = Session.getInstance(properties);
        // 设置为debug模式, 可以查看详细的发送 log
        session.setDebug(true);

        // 3. 创建一封邮件
        MimeMessage message = createEmail(receiveMail,session);

        // 4. 根据 Session 获取邮件传输对象
        Transport transport = session.getTransport();

        // 5. 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错
        transport.connect(myEmailAccount, myEmailPassword);

        // 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
        transport.sendMessage(message, message.getAllRecipients());
        // 7. 关闭连接
        transport.close();

        return captcha;
    }
    /*创建一封邮件 String receiveMail:收件人地址,我这里是前台传过来的*/
    public static MimeMessage createEmail(String receiveMail,Session session) throws Exception {
        /*1.创建一封邮件*/
        MimeMessage mimeMessage = new MimeMessage(session);
        /*2.发件人信息*/
        mimeMessage.setFrom(new InternetAddress(myEmailAccount,"投票管理系统","UTF-8"));
        /*3.收件人信息*/
        mimeMessage.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(receiveMail,"尊敬的用户","UTF-8"));
        /*4.设置主题*/
        mimeMessage.setSubject("注册验证","UTF-8");
        /*5.邮件正文*/
        mimeMessage.setContent(captcha(),"text/html;charset=UTF-8");
        /*6.设置邮件方式时间*/
        mimeMessage.setSentDate(new Date());
        /*7.保存设置*/
        mimeMessage.saveChanges();
        /*8.返回邮件*/
        return mimeMessage;
    }
    
    /*生成随机验证码*/
    public static String captcha(){
        captcha="";
        for (int i=0;i<6;i++) {
            /*产生[0,10)的随机数*/
            int number = random.nextInt(10);
            captcha += number;
        }
        return captcha;
    }
}

– 这样就可以发送一封简易的邮件啦!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈哈都疯了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值