博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java email发送
阅读量:5140 次
发布时间:2019-06-13

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

实现了直接放入文本文件即可,这样可以自己在文件编辑文字。代码如下:

public static void sendFile(String to,String subject,File content) throws Exception {        // 创建Session实例对象        Session session = Session.getDefaultInstance(props);        //创建发送信息的对象,并加入配置文件        MimeMessage message = new MimeMessage(session);        //设置发件人        message.setFrom(new InternetAddress("jxndyy2014@163.com"));        //设置主题        message.setSubject(subject);        // 设置收件人        message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to));        // 设置发送时间        message.setSentDate(new Date());        //传入一个HTML文件,指定MIME类型为text/html类型,并指定字符编码为utf-8        FileInputStream inputStream = new FileInputStream(content);        byte[] by = new byte[24];        int temp = 0;        String setContent = "";        while((temp = inputStream.read(by)) != -1) {           setContent += new String(by,0,temp);        }        message.setContent(setContent,"text/html;charset=utf-8");        // 保存并生成最终的邮件内容        message.saveChanges();        // 发送邮件        // 获得Transport实例对象        Transport transport = session.getTransport();        // 打开连接        transport.connect("jxndyy2014@163.com", "blue208115501");        // 将message对象传递给transport对象,将邮件发送出去        transport.sendMessage(message, message.getAllRecipients());        // 关闭连接        transport.close();    }

 

-----------------------------------------------------------------

今天自己封装了email发送,做了一个对外的接口,目前支持text/html类型,打算明天支持直接文字类型以及html文件类型,先上传目前的封装代码。(2016/8/29)。

 

我在写这段代码的时候出现了正文乱码现象,调整了一个小时也没有找出问题,换成英文可以正常发送,但是里面包含中文就是乱码并且时而发送邮件失败。但是调整一个小时后自己突然好了,无论我改什么编码类型都能正常解码,我对照了原来自己的代码也是一摸一样,我对此百思不得其解,目前也没有发现问题。

我是maven管理项目,所以在pom.xml文件导入两个jar包依赖

commons-email
commons-email
1.1
javax.activation
activation
1.1.1

 建立一个SendMail类封装数据

package com.yuyang.Common;import org.apache.commons.mail.MultiPartEmail;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.swing.plaf.PanelUI;import java.util.Date;import java.util.Properties;/** * Created by yangyu on 16/8/29. */public class SendMail {   private static Properties props = null;//初始化链接邮件会话信息    // 邮件发送协议    private final static String PROTOCOL = "smtp";    // SMTP邮件服务器    private final static String HOST = "smtp.163.com";    // SMTP邮件服务器默认端口    private final static String PORT = "25";    // 是否要求身份认证    private final static String IS_AUTH = "true";    // 是否启用调试模式(启用调试模式可打印客户端与服务器交互过程时一问一答的响应消息)    private final static String IS_ENABLED_DEBUG_MOD = "true";    static {        props = new Properties();        props.setProperty("mail.transport.protocol", PROTOCOL);        props.setProperty("mail.smtp.host", HOST);        props.setProperty("mail.smtp.port", PORT);        props.setProperty("mail.smtp.auth", IS_AUTH);        props.setProperty("mail.debug",IS_ENABLED_DEBUG_MOD);    }    /**     *     * 发送简单的HTML邮件     * */     public static void sendTextEmail(String to,String subject,String content) throws Exception{         // 创建Session实例对象         Session session = Session.getDefaultInstance(props);         //创建发送信息的对象,并加入配置文件         MimeMessage message = new MimeMessage(session);         //设置发件人         message.setFrom(new InternetAddress("jxndyy2014@163.com"));         //设置主题         message.setSubject(subject);         // 设置收件人         message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to));         // 设置发送时间         message.setSentDate(new Date());         //设置html内容为邮件正文,指定MIME类型为text/html类型,并指定字符编码为utf-8         message.setContent(content,"text/html;charset=utf-8");         // 保存并生成最终的邮件内容         message.saveChanges();         // 发送邮件         // 获得Transport实例对象         Transport transport = session.getTransport();         // 打开连接         transport.connect("jxndyy2014@163.com", "blue208115501");         // 将message对象传递给transport对象,将邮件发送出去         transport.sendMessage(message, message.getAllRecipients());         // 关闭连接         transport.close();     }}

最后我用junit4进行测试

import com.yuyang.Common.SendMail;import org.junit.Test;/** * Created by yangyu on 16/8/29. */public class SendMailTest {    @Test    public void testSendMail() throws Exception {        SendMail.sendTextEmail("jxndyy2015@163.com","测试","这是您的验证码:123123");    }}

 

转载于:https://www.cnblogs.com/claireyu1219/p/5819688.html

你可能感兴趣的文章
dropdownlist onSelectIndexChanged 事件
查看>>
c-3:位运算:位运算基本用法
查看>>
linux提权辅助工具(一):linux-exploit-suggester.sh
查看>>
[转] VS2017 打包安装程序
查看>>
Hadoop分布式文件系统中架构和设计要点汇总
查看>>
cout和printf
查看>>
L1-Day5
查看>>
UVa 10088 - Trees on My Island (pick定理)
查看>>
#C++PrimerPlus# Chapter11_Exersice4_mytimeV4
查看>>
iOS8 针对开发者所拥有的新特性汇总如下
查看>>
Jmeter + Grafana搭建实时监控可视化
查看>>
uCGUI字符串显示过程分析和uCGUI字库的组建
查看>>
Echarts使用一个图例legend实现全选和全部取消的功能
查看>>
ASP.NET Core 2.1对GDPR的支持
查看>>
h5唤起app
查看>>
SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件
查看>>
[转]vs2010编译金山代码
查看>>
数学图形之Boy surface
查看>>
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
查看>>
3.浏览器检测
查看>>