Java邮件发送

ps:感谢狂神老哥

依赖

<dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>
      <version>1.4.7</version>
    </dependency>
    <dependency>
      <groupId>javax.activation</groupId>
      <artifactId>activation</artifactId>
      <version>1.1.1</version>
    </dependency>

邮件发送

package com.chen;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;

//发送一封简单邮件
public class MailDemo01 {
    public static void main(String[] args) throws Exception {
        Properties properties = new Properties();
        properties.setProperty("mail.host","smtp.qq.com");  //设置qq邮件服务器
        properties.setProperty("mail.transport.protocol","smtp");//设置邮件发宋协议
        properties.setProperty("mail.smtp.auth","true");//需要验证用户名密码

        //qq邮箱的话还需要设置ssl加密,下面代码
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.enable","true");
        properties.put("mail.smtp.ssl.socketFactory",sf);

        //javamail发送邮件的五个步骤
        //1.创建定义整个应用程序所需要的环境信息的session对象
        //qq才有的,
        Session session = Session.getDefaultInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("******@qq.com","授权码");//发件人邮箱名和授权码
            }
        });
        //开启session的debug模式,可以查看程序发送email的运行状态
        session.setDebug(true);

        //2.通过session得到transport对象
        Transport transport = session.getTransport();
        //3.使用邮箱的用户名和授权码连接上邮件服务器
        transport.connect("smtp.qq.com","*******@qq.com","授权码");
        //4.创建邮件
        //带附件的,直至封装成方法
        MimeMessage mimeMessage = imageMail(session);
        /*         带附件方法中已经添加了下面的代码
        MimeMessage mimeMessage = new MimeMessage(session);//创建邮件对象
        mimeMessage.setFrom(new InternetAddress("******@qq.com"));//发件人
        mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("******@qq.com"));//收件人
        mimeMessage.setSubject("邮件");//邮件主题                 */

        /*-------------------------简单,纯文本---------------------------------------
        mimeMessage.setContent("hello","text/html;charset=utf-8");//简单邮件内容
        -----------------------------------------------------------------------------*/

        /*-------------------------带图片------------------------------------------------
        //准备图片数据
        MimeBodyPart image = new MimeBodyPart();
        DataHandler dataHandler = new DataHandler(new FileDataSource("图片路径"));//图片需要经过数据处理
        image.setDataHandler(dataHandler);//在我们的body主题中放入这个处理的图片数据
        image.setContentID("啥都行");//给图片设置一个id我们在后面可以使用
        //附件上面一样只不过setContentID换成了setFileName
        mimeBodyPart.serFileName("");
        //准备正文数据
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("这是包含图片<img src='cid:上面的那个啥都行'>的邮件","text/html;charset=utf-8");
        //描述数据关系
        MimeMultipart mm  = new MimeMultipart();
        mm.addBodyPart(image);
        mm.addBodyPart(text);
        mm.setSubType("related");//也可以直接mixed
        //设置到消息中,保存修改
        mimeMessage.setContent(mm);
        mimeMessage.saveChanges();
        ----------------------------------------------------------------------------------*/



        //5.发送邮件
        transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
        //6.关闭连接
        transport.close();
    }
    public static MimeMessage imageMail(Session session) throws MessagingException {

        //消息的固定信息
        MimeMessage mimeMessage = new MimeMessage(session);

        //邮件发送人
        mimeMessage.setFrom(new InternetAddress("*****@qq.com"));
        //邮件接收人,可以同时发送给很多人,我们这里只发给自己;
        mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("*****@qq.com"));
        mimeMessage.setSubject("我也不知道是个什么东西就发给你了"); //邮件主题


        /*
        编写邮件内容
        1.图片
        2.附件
        3.文本
         */

        //图片
        MimeBodyPart body1 = new MimeBodyPart();
        body1.setDataHandler(new DataHandler(new FileDataSource("mail/src/1.png")));
        body1.setContentID("1.png"); //图片设置ID

        //文本
        MimeBodyPart body2 = new MimeBodyPart();
        body2.setContent("请注意,我不是广告<img src='cid:1.png'>","text/html;charset=utf-8");

        //附件
        MimeBodyPart body3 = new MimeBodyPart();
        body3.setDataHandler(new DataHandler(new FileDataSource("mail/src/1.png")));
        body3.setFileName("1.png"); //附件设置名字

        MimeBodyPart body4 = new MimeBodyPart();
        body4.setDataHandler(new DataHandler(new FileDataSource("mail/src/1.png")));
        body4.setFileName(""); //附件设置名字

        //拼装邮件正文内容
        MimeMultipart multipart1 = new MimeMultipart();
        multipart1.addBodyPart(body1);
        multipart1.addBodyPart(body2);
        multipart1.setSubType("related"); //1.文本和图片内嵌成功!

        //new MimeBodyPart().setContent(multipart1); //将拼装好的正文内容设置为主体
        MimeBodyPart contentText =  new MimeBodyPart();
        contentText.setContent(multipart1);

        //拼接附件
        MimeMultipart allFile =new MimeMultipart();
        allFile.addBodyPart(body3); //附件
        allFile.addBodyPart(body4); //附件
        allFile.addBodyPart(contentText);//正文
        allFile.setSubType("mixed"); //正文和附件都存在邮件中,所有类型设置为mixed;


        //放到Message消息中
        mimeMessage.setContent(allFile);
        mimeMessage.saveChanges();//保存修改


        return mimeMessage;

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java邮件发送工具是JavaMail API。可以使用JavaMail API来发送文本邮件、HTML邮件、带附件的邮件等。 在Java中,可以使用MimeMessage类和MimeMessageHelper类来创建并发送邮件。首先,需要添加依赖项javax.mail到项目的pom.xml文件中: ``` <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency> ``` 然后,可以使用以下代码来创建和发送邮件: ```java import javax.mail.*; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessageHelper; public class EmailSender { public static void sendEmail(String to, String subject, String content, String from) { // 创建Session对象 Session session = Session.getDefaultInstance(new Properties()); try { // 创建MimeMessage对象 MimeMessage message = new MimeMessage(session); // 设置发件人 message.setFrom(new InternetAddress(from)); // 设置收件人 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 设置主题 message.setSubject(subject); // 设置内容 message.setContent(content, "text/html"); // 发送邮件 Transport.send(message); System.out.println("邮件发送成功"); } catch (MessagingException e) { System.err.println("邮件发送失败"); } } } ``` 以上是一个简单的Java邮件发送工具类的示例。使用该工具类可以发送包含HTML代码的邮件。你可以调用`sendEmail`方法来发送邮件,其中`to`参数是收件人的邮箱地址,`subject`参数是邮件的主题,`content`参数是邮件的内容,`from`参数是发件人的邮箱地址。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值