• 通过javamail发送电子邮件


    首先当然是到官网去下载javamail的jar包了;放置到工程中

    接下来当然就是代码了,下面是我自己写的一个demo,

    package com.mail;

    import java.util.Date;
    import java.util.Properties;

    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.activation.FileDataSource;
    import javax.mail.BodyPart;
    import javax.mail.Message;
    import javax.mail.Multipart;
    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;

    public class TestMail {
    private static String affix = ""; // 附件地址
    private static String affixName = ""; // 附件名称

    public static void sendMail(String fromMail, String user, String password,
    String toMail,
    String mailTitle,
    String mailContent) throws Exception {
    Properties pro = new Properties(); //可以加载一个配置文件
    // 使用smtp:简单邮件传输协议
    String smtpHostName = "smtp." + fromMail.split("@")[1];
    pro.put("mail.smtp.host", smtpHostName);//存储发送邮件服务器的信息
    pro.put("mail.smtp.auth", "true");//同时通过验证

    Session session = Session.getInstance(pro);//根据属性新建一个邮件会话
    session.setDebug(true); //有他会打印一些调试信息。

    MimeMessage message = new MimeMessage(session);//由邮件会话新建一个消息对象
    message.setFrom(new InternetAddress(fromMail));//设置发件人的地址
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail));//设置收件人,并设置其接收类型为TO
    message.setSubject(mailTitle);//设置标题
    //设置信件内容

    // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
    Multipart multipart = new MimeMultipart();

    // 设置邮件的文本内容
    BodyPart contentPart = new MimeBodyPart();
    contentPart.setText("邮件的具体内容在此");
    multipart.addBodyPart(contentPart);
    // 添加附件
    BodyPart messageBodyPart = new MimeBodyPart();
    DataSource source = new FileDataSource(affix);
    // 添加附件的内容
    messageBodyPart.setDataHandler(new DataHandler(source));
    // 添加附件的标题
    // 这里很重要,通过下面的MimeUtility编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
    messageBodyPart.setFileName(MimeUtility.encodeText(affixName));
    multipart.addBodyPart(messageBodyPart);

    message.setContent(multipart);
    // message.setText(mailContent); //发送 纯文本 邮件 todo
    // message.setContent(mailContent, "text/html;charset=gbk"); //发送HTML邮件,内容样式比较丰富
    message.setSentDate(new Date());//设置发信时间
    message.saveChanges();//存储邮件信息

    //发送邮件
    Transport transport = session.getTransport("smtp");
    // Transport transport = session.getTransport();
    transport.connect(user, password); //这里的密码可能是发件人的登录密码,也可能是对应邮箱服务器的授权码
    transport.sendMessage(message, message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址
    transport.close();
    }

    public static void main(String[] args) throws Exception {
    sendMail("", "", "", "", "", "");
    }
    }

    如有帮助,不胜荣幸;

  • 相关阅读:
    Windows API的CreateFile()中的OPEN_ALWAYS和CREATE_ALWAYS之间的差异
    Linux下的虚拟串口对(可用于在本机上模拟串口进行调试)
    [转&精]IO_STACK_LOCATION与IRP的一点笔记
    【转】在WIN7、WIN10操作系统用WebDAV映射网络驱动器需要的操作
    Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information
    分布式处理大数据的目录及学习树
    利用docker将传统企业集中式架构转换为微服务架构的实践经验
    docker学习笔记5 端口映射与容器互联
    docker学习笔记4 数据管理、持久化
    docker学习笔记3 容器 container
  • 原文地址:https://www.cnblogs.com/cj28-27/p/6372601.html
Copyright © 2020-2023  润新知