博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java代码实现发送邮件
阅读量:6154 次
发布时间:2019-06-21

本文共 3314 字,大约阅读时间需要 11 分钟。

package com.ust.email;

import java.io.File;

import java.util.Date;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;
import javax.mail.Address;
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 AttachmentMailSender {

    public static boolean sendMail(MailSenderInfo mailInfo) {

    // 判断是否需要身份认证
    MyAuthenticator authenticator = null;
    if (mailInfo.isValidate()) {
    // 如果需要身份认证,则创建一个密码验证器
    authenticator = new MyAuthenticator(mailInfo.getUserName(),
    mailInfo.getPassword());
    }
    // 根据邮件发送的属性和密码验证器构造一个发送邮件的session
    Session sendMailSession = Session.getInstance(mailInfo
    .getProperties(), authenticator);
    try {
    // 根据session创建一个邮件消息
    Message mailMessage = new MimeMessage(sendMailSession);
    // 创建邮件发送者地址
    Address from = new InternetAddress(mailInfo.getFromAddress());
    // 设置邮件消息的发送者
    mailMessage.setFrom(from);
    // 创建邮件的接收者地址,并设置到邮件消息中
    Address to = new InternetAddress(mailInfo.getToAddress());
    mailMessage.setRecipient(Message.RecipientType.TO,to);
    // 设置邮件消息的主题
    mailMessage.setSubject(mailInfo.getSubject());
    // 设置邮件消息发送的时间
    mailMessage.setSentDate(new Date());

    // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象    Multipart mainPart = new MimeMultipart();    // 创建一个包含HTML内容的MimeBodyPart    BodyPart html = new MimeBodyPart();    // 设置HTML内容    html.setContent(mailInfo.getContent(), "text/html; charset=GBK");    mainPart.addBodyPart(html);    // 为邮件添加附件    String[] attachFileNames = mailInfo.getAttachFileNames();    if (attachFileNames != null && attachFileNames.length > 0) {        // 存放邮件附件的MimeBodyPart        MimeBodyPart attachment = null;        File file = null;        for (int i = 0; i < attachFileNames.length; i++) {            attachment = new MimeBodyPart();            // 根据附件文件创建文件数据源            file = new File(attachFileNames[i]);            FileDataSource fds = new FileDataSource(file);            attachment.setDataHandler(new DataHandler(fds));            // 为附件设置文件名            attachment.setFileName(MimeUtility.encodeWord(file.getName(), "GBK",                    null));            mainPart.addBodyPart(attachment);        }    }    // 将MiniMultipart对象设置为邮件内容    mailMessage.setContent(mainPart);    // 发送邮件    Transport.send(mailMessage);    return true;} catch (Exception e) {    e.printStackTrace();    return false;}

    }

    public static void main(String[] args) {

    // 创建邮件信息
    // 创建邮件信息
    MailSenderInfo mailInfo = new MailSenderInfo();
    mailInfo.setMailServerHost("mail.XXX.com")//mail.qq.com 这个自己看类型百度查询下,我们公司地址不透露啦
    mailInfo.setMailServerPort("25");
    mailInfo.setValidate(true);
    mailInfo.setUserName("用户名");
    mailInfo.setPassword("密码");
    mailInfo.setFromAddress("你的邮箱");
    mailInfo.setToAddress("收件邮箱");
    mailInfo.setSubject("MyMail测试");
    mailInfo.setContent("我的邮件测试\n\rMy test mail\n\r");
    //附件
    String[] fileNames = new String[3];
    fileNames[0] = "C:/temp/new.txt";
    fileNames[1] = "C:/temp/test.wav";
    fileNames[2] = "C:/temp/mary_photo.jpg";
    mailInfo.setAttachFileNames(fileNames);

    AttachmentMailSender.sendMail(mailInfo);

    }

    }

转载于:https://blog.51cto.com/11964104/2071053

你可能感兴趣的文章
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>
HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法...
查看>>
SparseArray
查看>>
第二章
查看>>
android背景选择器selector用法汇总
查看>>
[转]Paul Adams:为社交设计
查看>>
showdialog弹出窗口刷新问题
查看>>
java
查看>>
Vue.js连接后台数据jsp页面  ̄▽ ̄
查看>>
关于程序的单元测试
查看>>
mysql内存优化
查看>>
都市求生日记第一篇
查看>>
Java集合---HashMap源码剖析
查看>>
SQL优化技巧
查看>>
thead 固定,tbody 超出滚动(附带改变滚动条样式)
查看>>
Dijkstra算法
查看>>
css 动画 和 响应式布局和兼容性
查看>>