zoukankan      html  css  js  c++  java
  • 通过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("", "", "", "", "", "");
    }
    }

    如有帮助,不胜荣幸;

  • 相关阅读:
    记录一次无法很好解决的问题
    java与进制转换
    花了点时间写了下测试框架
    利用eclipse或者pycharm编写monkeyrunner脚本,cmd打开应用“转转”并截图保存到D盘
    Instrumentation
    关于学生机受控应用的问题总结
    忙里偷闲一天
    linux下python3的安装(已安装python2的情况下)
    ROS上利用usb_cam读取摄像头图像
    ch8 -- directMethod
  • 原文地址:https://www.cnblogs.com/cj28-27/p/6372601.html
Copyright © 2011-2022 走看看