Java 发送 Email
来源:互联网 发布:网络之大神我只是路过 编辑:程序博客网 时间:2024/06/05 07:14
package test;import java.io.UnsupportedEncodingException;import java.util.List;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.internet.AddressException;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;import org.apache.commons.lang.StringUtils;public class WithAttachmentMessage { /** * 根据传入的文件路径创建附件并返回 * @param fileName 福建了路径 * @return * @throws MessagingException */ public static MimeBodyPart createAttachment(String fileName) throws MessagingException{ MimeBodyPart part = new MimeBodyPart(); FileDataSource fds = new FileDataSource(fileName); part.setDataHandler(new DataHandler(fds)); part.setFileName(fds.getName()); return part; } /** * 根据传入的邮件正文和文件路径构建图文并茂的正文 * @param body 邮件正文 * @param fileName 图片路径 * @return * @throws MessagingException */ public static MimeBodyPart createContent(String body, String fileName) throws MessagingException{ //用于保存最终正文部分 MimeBodyPart contentBody = new MimeBodyPart(); // 用于组合正文与图片,"related"型的MimeMultipart对象 MimeMultipart contentMulti = new MimeMultipart("related"); // 正文的文本部分 MimeBodyPart textBody = new MimeBodyPart(); textBody.setContent(body, "text/html;charset=utf-8"); contentMulti.addBodyPart(textBody); //正文的图片部分 MimeBodyPart jpgBody = new MimeBodyPart(); FileDataSource fds = new FileDataSource(fileName); jpgBody.setDataHandler(new DataHandler(fds)); jpgBody.setContentID("logo_jpg"); contentMulti.addBodyPart(jpgBody); //将上面的"related"型的MimeMultipart对象作为邮件正文 contentBody.setContent(contentMulti); return contentBody; } /** * 根据传入的 Seesion 对象创建混合型的 MIME消息 * @param session * @param nick 发件人昵称 * @param from 发件人邮箱地址 * @param headName 邮件标题 * @param receiveUser 收件人 * @param bodyParts 邮件内容 * List<MimeBodyPart> * @return * @throws AddressException * @throws MessagingException * @throws UnsupportedEncodingException */ public MimeMessage createMessage(Session session,String nick, String from, String headName, String receiveUser, List<MimeBodyPart> bodyParts) throws AddressException, MessagingException, UnsupportedEncodingException{ MimeMessage msg = new MimeMessage(session); //设置发件人昵称 String nickStr = ""; if(StringUtils.isBlank(nick)){ nickStr = "未知帐号"; }else{ nickStr = MimeUtility.encodeText(nick); } msg.setFrom(new InternetAddress(nickStr + " <" + from + ">"));//发件人 msg.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveUser));//收件人 msg.setSubject(headName);//邮件标题 //判断邮件内容 if(bodyParts == null || bodyParts.size() == 0){ return null; } // 设置正文与附件之间的关系 MimeMultipart allPart = new MimeMultipart(); for(MimeBodyPart mbp : bodyParts){ allPart.addBodyPart(mbp); } allPart.setSubType("mixed"); // 将上面混合型的 MimeMultipart 对象作为邮件内容并保存 msg.setContent(allPart, "text/html;charset=utf-8"); msg.saveChanges(); return msg; }}
package test;import java.util.ArrayList;import java.util.List;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;public class MessageSender {// 设置服务器 private static String KEY_SMTP = "mail.smtp.host"; private static String VALUE_SMTP = "smtp.qq.com"; // 服务器验证 private static String KEY_PROPS = "mail.smtp.auth"; private static String VALUE_PROPS = "true"; // 发件人用户帐号、昵称和密码(邮箱必须开启SMTP服务才能使用) private static String SEND_USER = "1219964716@qq.com"; private static String SEND_UNAME = "测试帐号"; private static String SEND_PWD = "wb1234123";//邮箱独立密码 /** * 创建session对象,此时需要传输协议,是否认证身份 * @param protocol * @return */ public Session createSession(String protocol){ Properties propertie = new Properties(); propertie.setProperty("mail.transport.protocol", protocol); //SMTP发送邮件,需要进行身份验证 propertie.setProperty(KEY_PROPS, VALUE_PROPS); propertie.put(KEY_SMTP, VALUE_SMTP); // 构建授权信息,用于进行SMTP进行身份验证 Authenticator authenticator = new Authenticator() { protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(SEND_USER, SEND_PWD); } }; //启动JavaMail调试功能,可以返回与SMTP服务交互的命令信息 Session session = Session.getInstance(propertie,authenticator); session.setDebug(true); return session; } /** * 传入Session、MimeMessage对象,创建 Transport 对象发送邮件 * @param session * @param msg * @throws Exception */ public void sendMail(Session session, MimeMessage msg) throws Exception{ // 由 Session 对象获得 Transport 对象 Transport transport = session.getTransport(); // 发送用户名、密码连接到指定的 smtp 服务器 transport.connect(VALUE_SMTP, SEND_USER, SEND_PWD); // 设置邮件的收件人 TO:表示发件人 CC:表示抄送 BCC:表示暗送 transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO)); transport.close(); } public static void main(String[] args) throws Exception { String receiveUser = "9653042143@qq.com";//收件人邮箱地址 String headName = "创建内含附件、图文并茂的邮件!"; String body = "<h4>内含附件、图文并茂的邮件测试!!!</h4> </br>" + "<a href = https://www.baidu.com/> 百度</a></br>" + "<img src = 'cid:logo_jpg'></a>"; // MimeBodyPart attachment01 = WithAttachmentMessage.createAttachment("D:\\Java\\JS\\jquery2.1.3.js"); // MimeBodyPart attachment02 = WithAttachmentMessage.createAttachment("D:\\Java\\JS\\jquery2.1.3.rar"); MimeBodyPart content = WithAttachmentMessage.createContent(body, "E:\\logoMark.png"); List<MimeBodyPart> bodyParts = new ArrayList<MimeBodyPart>(); // bodyParts.add(attachment01); // bodyParts.add(attachment02); bodyParts.add(content); MessageSender sender = new MessageSender(); Session session = sender.createSession("smtp"); MimeMessage mail = new WithAttachmentMessage().createMessage(session, SEND_UNAME, SEND_USER, headName, receiveUser, bodyParts); sender.sendMail(session, mail); }}
需要包:commons-lang-2.3.jar和mailapi.jar
0 0
- java发送email
- JAVA发送Email
- 使用java发送email
- java Email 的发送
- java发送email
- java发送Email邮件
- javaMail java发送email
- Java 发送 Email
- Java实现Email发送
- java发送Email
- java 发送Email 实现
- 纯Java发送Email
- java 发送email
- java发送email
- java发送Email
- java发送Email
- 使用java发送email
- java email发送
- React Native学习一:初识React Native
- 生成mac的公钥 密钥
- android开发之EditText属性详解
- Spring MVC教程快速入门
- 路由算法入门
- Java 发送 Email
- java异常 java.lang.ClassNotFoundException: javassist.util.proxy.MethodFilter
- JD京东物流电子面单接口对接文档-快递鸟
- uva11542 Square
- 使用iText生成pdf文件
- Oracle中to_char的用法
- UpdatePanel控件使用
- 安卓Dialog封装
- Nova启动虚拟机执行过程