`

使用Java Mail发送邮件小结

阅读更多

使用Java Mail发送邮件需要用到mail.jar和activation.jar(非必须),发送一个邮件的基本步骤是:

  1. 初始化一个Properties类,将邮件服务器相关属性以key,value的形式添加进去
  2. 根据Properties实例创建Session
  3. 根据Session创建Message,并且在Message中添加邮件的From,to,body, attachment等等
  4. 使用Transport.send(message)发送邮件

代码如下:

package com.jingshou.mail;

import java.io.File;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
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;

public class MailUtil {
	private static String host="smtp.gmail.com";
	private static String port = "465";
	private static String from = "10086@qq.com";
	private static final String USER = "gmailaccount";
	private static final String PASS = "gmailpassword";
	private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
		
	public static void main(String[] args) throws AddressException, MessagingException {
		String[] attachment = {"E:\\me.JPG"};
		sendMail("8131****@qq.com", "Test Subject", "Test Content from Java with attachment", attachment);
		System.out.println("Email Send successfully");

	}
	
	public static void sendMail(String to, String sub, String body, String[] attaches) throws AddressException, MessagingException{
		Properties props = System.getProperties();
		props.put("mail.smtp.host", host);
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
		props.put("mail.smtp.socketFactory.fallback", "false");
		props.put("mail.smtp.port", port);
		props.put("mail.smtp.auth", "true");
		
		// Create session by username and password
		Session session = Session.getDefaultInstance(props, new Authenticator(){
			@Override
			public PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(USER, PASS);
				}
		});
		
		// Initialize Message
		Message message = new MimeMessage(session);
		message.setFrom(new InternetAddress(from));
		// Using message.setRecipients for To list
		message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
		message.setSubject(sub);
		message.setText(body);
		
		// Add attchment
		MimeBodyPart mbp = new MimeBodyPart();
		mbp.setText(body);
		Multipart  mpart = new MimeMultipart();
		mpart.addBodyPart(mbp);
		
		if (attaches != null) {
			for (String fileName : attaches){
				File file = new File(fileName);
				if (file.exists()) {
					mbp = new MimeBodyPart();
					DataSource source = new FileDataSource(file);
					mbp.setDataHandler(new DataHandler(source));
					mbp.setFileName(file.getName());
					mpart.addBodyPart(mbp);
					System.out.println("The attached file name is: " + file.getName());
				}
				
			}
		}
		message.setContent(mpart);
		
		// Sent by Transort.send()
		Transport.send(message);	
	}

}

 

运行程序发现发出邮件From始终是自己Gmail的帐号,而不是自己指定的地址

 本文出自"lijingshou"博客,转载请务必保留此出处http://lijingshou.iteye.com/blog/2017611

分享到:
评论

相关推荐

    Java通过exchange协议发送邮件

    Java通过Exchange协议发送邮件是Java开发中的一种常见需求,通过使用Exchange协议,可以实现Java程序与Exchange服务器之间的交互,实现发送邮件的功能。本文将详细介绍Java通过Exchange协议发送邮件的实现方法,并...

    spring+velocity发送邮件

    根据提供的信息,我们可以详细探讨如何使用Spring框架结合Velocity模板引擎来实现邮件的自动化发送功能。这一过程涉及到Spring框架的基本配置、Velocity模板引擎的使用以及JavaMail API的应用。 ### Spring框架与...

    JavaMail流程

    #### 八、小结 通过以上步骤,我们可以清晰地了解JavaMail API在处理邮件方面的强大功能。无论是简单的纯文本邮件发送还是复杂的带附件邮件,JavaMail都提供了完整的解决方案。同时,对于邮件的接收、查看和回复也...

    JavaMail and Email Processing in .NET Framework探索报告

    根据艾瑞咨询的数据,2011年中国企业使用电子邮件系统的规模达到了500.8万家,同比增长了38.2%;2012年,电子邮件系统在国内企业的渗透率达到了20.2%,相比2011年提高了6.2%。这一趋势表明,随着企业对数据安全、...

    Python编程入门经典

    1.1.4 小结 4 1.2 准备工作 4 1.2.1 在非Windows系统上安装 Python 3.1 5 1.2.2 使用Python Shell 5 1.3 开始使用Python——字符串 6 1.3.1 字符串概述 6 1.3.2 为什么需要引号 6 1.3.3 为什么有3种类型的引号 7 ...

    Android开发应用实战详解源代码

    5.4 e-mail发送程序 5.5 实现手机震动效果 5.6 图文提醒效果 5.7 状态栏提醒 5.8 检索通讯录 5.8.1 实现原理 5.8.2 contentprovider介绍 5.8.3 具体实现 5.9 文件管理 5.10 还原手机桌面 5.11 置换背景图 5.12 修改...

    JavaWeb培训讲义

    - 开发Java Mail实现邮件发送功能。 #### 三、JavaWeb应用简介 - **教学目标**: - 理解JavaWeb应用的基本概念。 - 掌握Servlet容器的工作原理。 - 学习如何安装和启动Tomcat服务器。 - 创建并部署简单的...

    Visual C++ 2005入门经典--源代码及课后练习答案

    1.7 小结 29 第2章 数据、变量和计算 31 2.1 C++程序结构 31 2.1.1 程序注释 36 2.1.2 #include指令——头文件 37 2.1.3 命名空间和using声明 37 2.1.4 main()函数 38 2.1.5 程序语句 38 2.1.6 ...

    国际互联网【计算机网络技术】

    本书内容主要包括:计算机网络的基础知识、Internet 的使用(互联网的接入方式、万维网、电子邮件、FTP 服 务) 、网络软件的应用(常用网络软件、网络工具)、网上生活(网上生活小区、网上营销、电子商务)、...

Global site tag (gtag.js) - Google Analytics