java中发送邮件的功能有哪些内容?如何发送双重邮件?

BSO 2020-09-01 15:13:25 java常见问答 3261

自从20世纪90年代以来,java的发展迅猛而全面,它的应用几乎涉及到了我们工作与生活的方方面面。越来越多的人投入到这股潮流中,对于未来充满无限憧憬。今天就来为大家介绍,java在日常工作中的应用,以及如何发送包含有附件和内嵌图片双重内容的邮件。

在简述发邮件之前,我们需要先了解一下java中发送邮件的功能一般包含哪些内容?

首先,一个发送邮件的功能一般包含有配置邮件发送的协议,端口,邮件的发件人,收件人以及邮件内容等。如果我们希望能够很好的组织起来每个部分,需要针对每个不同的需求选择最合适的工具,这样对于长期的管理和维护来说节省了很多时间和精力。

接下来我们通过实际的代码来为大家展示如何发送含有双重内容的邮件。代码展示如下:

package cn.wz.util;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
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;
/**
 * @Description: 发送包含内嵌图片和附件的复杂邮件
 */
public class SendEmail_Photo_Attachments
{
    private static String mailFrom = null; // 指明邮件的发件人
    private static String password_mailFrom = null; // 指明邮件的发件人登陆密码
    private static String mailTo = null; // 指明邮件的收件人
    private static String mailTittle = null; // 邮件的标题
    private static String mailText = null; // 邮件的文本内容
    private static String mail_host = null; // 邮件的服务器域名
    private static String photoSrc = null; // 发送图片的路径
    private static List < String > fileList = new ArrayList < > (); // 发送附件的路径
    public static void main(String[] args) throws Exception
    {
        mailFrom = "test2@wz.com";
        password_mailFrom = "test";
        mailTo = "test3@wz.com";
        mailTittle = "带附件和带图片的的邮件";
        mailText = "xxx这是xxxx";
        mail_host = "wz.com";
        photoSrc = "resource\\images\\4.jpg";
        fileList.add(0, "resource\\attachments\\a.7z");
        fileList.add(1, "resource\\attachments\\b.7z");
        Properties prop = new Properties();
        prop.setProperty("mail.host", mail_host); // 需要修改
        prop.setProperty("mail.transport.protocol", "smtp");
        prop.setProperty("mail.smtp.auth", "true");
        // 使用JavaMail发送邮件的5个步骤
        // 1、创建session
        Session session = Session.getInstance(prop);
        // 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
        session.setDebug(true);
        // 2、通过session得到transport对象
        Transport ts = session.getTransport();
        // 3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证
        ts.connect(mail_host, mailFrom, password_mailFrom); // 需要修改
        // 4、创建邮件
        Message message = createMixedMail(session);
        // 5、发送邮件
        ts.sendMessage(message, message.getAllRecipients());
        ts.close();
    }
    /**
     * @Method: createMixedMail
     * @Description: 生成一封带附件和带图片的邮件
     */
    public static MimeMessage createMixedMail(Session session) throws Exception
    {
        MimeMessage message = new MimeMessage(session);
        // 设置邮件的基本信息
        message.setFrom(new InternetAddress(mailFrom)); // 发件人	
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo)); // 收件人
        message.setSubject(mailTittle);
        // 正文
        MimeBodyPart text = new MimeBodyPart();
        text.setContent(mailText + "<br/><img src='cid:aaa.jpg'>", "text/html;charset=UTF-8");
        // 图片
        MimeBodyPart image = new MimeBodyPart();
        image.setDataHandler(new DataHandler(new FileDataSource(photoSrc)));
        image.setContentID("aaa.jpg");
        // 附件1
        MimeBodyPart attach = new MimeBodyPart();
        DataHandler dh = new DataHandler(new FileDataSource(fileList.get(0)));
        attach.setDataHandler(dh);
        attach.setFileName(dh.getName());
        // 附件2
        MimeBodyPart attach2 = new MimeBodyPart();
        DataHandler dh2 = new DataHandler(new FileDataSource(fileList.get(1)));
        attach2.setDataHandler(dh2);
        attach2.setFileName(MimeUtility.encodeText(dh2.getName()));
        // 描述关系:正文和图片
        MimeMultipart mp1 = new MimeMultipart();
        mp1.addBodyPart(text);
        mp1.addBodyPart(image);
        mp1.setSubType("related");
        // 描述关系:正文和附件
        MimeMultipart mp2 = new MimeMultipart();
        mp2.addBodyPart(attach);
        mp2.addBodyPart(attach2);
        // 代表正文的bodypart
        MimeBodyPart content = new MimeBodyPart();
        content.setContent(mp1);
        mp2.addBodyPart(content);
        mp2.setSubType("mixed");
        message.setContent(mp2);
        message.saveChanges();
        message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml"));
        // 返回创建好的的邮件
        return message;
    }
}

以上就是关于java中发送邮件的功能的概括,以及实例展示如何发送含有内嵌图片和附件的双重邮件。如果你对java程序代码例子感兴趣,想要了解更多常见问题,敬请关注奇Q工具网。

推荐阅读:

在java中怎么用TLS发送邮件?如何用SSL发送?

java的邮件服务器james怎么配置,怎么发送含有附件的邮件?

在java中邮件协议对接端口有哪些, 如何接收html格式的邮件?