`
b_l_east
  • 浏览: 639378 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java Mail 发送邮件

 
阅读更多

JavaMail官网:http://www.oracle.com/technetwork/java/javamail/index.html

 

以下是一个简单的发送邮件例子:

package com.mail;

import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
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;

public class Test {
        //注意免费的邮箱不能外部程序发送邮件
	private static String smtpHost = "smtp.163.com";
	private static String sender = "xjd@163.com";
	private static String senderName = "xjd";
	private static String senderPassword = "保密";
	private static String receiver = "xjd@google.com";
	private static String filePath = "D:/test.txt";//用于测试附件的文件

	public static void main(String[] args) throws MessagingException {
		Properties props = System.getProperties();
		//设置代理,没试过,大体有以下几种设置方式
//		props.put("http.proxyHost", "10.1.2.188");
//		props.put("http.proxyPort", "80");
//		props.put("proxySet", "true");
//		props.put("socksProxySet", "true");
//		props.put("socksProxyHost", "10.1.2.188");
//		props.put("socksProxyPort", "80");
		//设置系统属性(发送服务器): mail.smtp.host
		props.put("mail.smtp.host", smtpHost);
		//设置系统属性(身份认证): mail.smtp.auth
		props.put("mail.smtp.auth", "true");
		//准备邮件会话对象session
		Session session = Session.getDefaultInstance(props);
		
		
		//创建Message对象用于管理要发送的消息
		Message msg = new MimeMessage(session);
		//设置发件人
		msg.setFrom(new InternetAddress(sender));
		//设置收件人
		msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver));
		//设置主题
		msg.setSubject("This is subject");
		
		//创建一个消息对象
		MimeMultipart multiMsg = new MimeMultipart();//支持HTML形式的Msg类型
		//创建这个消息的body对象
		BodyPart body = new MimeBodyPart();
		body.setContent(
				"<meta http-equiv='Content-Type' content='text/html; charset=gb2312'/>" +
				"<h3>This is mail body</h3>",
				"text/html; charset=gb2312");//把页面内容设置进去
		multiMsg.addBodyPart(body);//把body对象加入到消息对象中
		//再创建一个消息对象用于添加附件
		BodyPart bodyFile = new MimeBodyPart();
		FileDataSource fileSource = new FileDataSource(filePath);
		bodyFile.setDataHandler(new DataHandler(fileSource));
		bodyFile.setFileName(fileSource.getName());
		multiMsg.addBodyPart(bodyFile);//把附件对象加入到消息对象中
		
		msg.setContent(multiMsg);//把消息对象放到消息中
		msg.saveChanges();
		
		//开始发送邮件
		//构建smtp类型的发送器对象
		Transport transport = session.getTransport("smtp");
		//连接
		transport.connect(props.getProperty("mail.smtp.host"), senderName, senderPassword);
		//发送
		transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
		transport.close();
		System.out.println("Complete!");
	}

}

 

邮件发送HTML正文中文乱码解决办法:

对于HTML内容加入方式加入,加入时指定编码格式即可

BodyPart bp = new BodyPart();

//第一种方式,直接加入HTML格式的字符串
bp.setContent(htmlString, "text/html; charset=utf-8");

//第二种方式,加入HTML文件
bp.setDataHandler(new DataHandler(new FileDataSource(htmlFile)));
//加入编码方式解决乱码
bp.setHeader("Content-Type", "text/html; charset=utf-8");
//加入传输编码,在网上搜到一些种方法,但我测试的时侯不用也能解决乱码,保险起见吧
bp.setHeader("Content-Transfer-Encoding", "Base64");
 

邮件发送时间的设置,因为大部分人的邮件排序都是以时间排序的,有的人(特别是发广告)想把邮件的发送时间设置在以后,从而可以让邮件一直排在前面,然而这种时间设置对于一些专业邮箱是会被拒收的,如163就是这样。

 

邮件发送含图片(或其它如JS,CSS文件等)的HTML的处理办法。

一般有两种办法:

1. 把这些要链接到的文件放到服务器上,链接处填上url。

 

本文章仅供以后参考。

分享到:
评论

相关推荐

    java mail发邮件

    在你提供的压缩包文件中,包含了三个关键元素:activation.jar、mail.jar以及SendMail.java,这些都是Java Mail发邮件所需的基本组件。 `activation.jar` 是JavaBeans Activation Framework (JAF) 的一部分,它是...

    java Mail 发送邮件及邮件附件

    Java Mail 发送邮件及邮件附件 Java Mail 是一个广泛使用的 Java 库,用于发送电子邮件。以下是 Java Mail 发送邮件及邮件附件的知识点。 Java Mail 简介 Java Mail 是一个 Java 库,提供了发送电子邮件的功能。...

    java mail 发送邮件

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。在Java应用程序中,我们通常使用JavaMail API来实现邮件的自动化操作,比如发送带有附件的邮件、群发邮件等。下面将...

    java mail 发送邮件代码与架包

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和操作邮件。这个API提供了广泛的协议支持,包括SMTP(简单邮件传输协议)用于发送邮件,POP3和IMAP4用于接收邮件。在Java Mail中,...

    Java mail发送邮件

    利用Java mail发送邮件,用到的一些类,一些方法,写的很简陋

    使用 java mail 发送邮件

    要使用Java Mail发送邮件,首先需要添加相应的依赖库到项目中。对于Android项目,通常会通过Gradle来引入。 1. 添加依赖: 在项目的build.gradle文件中,添加以下依赖: ```groovy dependencies { ...

    Java Mail发送邮件脚本及所需全部Jar包

    下面我们将详细探讨Java Mail发送邮件脚本的核心知识点,以及在实际操作中可能需要的Jar包。 1. **JavaMail API**:JavaMail API是Java中处理电子邮件的标准库,由JavaMail项目维护。它提供了一系列接口和类,包括`...

    java mail发送邮件

    JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送、接收和其他相关任务。它提供了对各种邮件协议(如 SMTP、POP3 和 IMAP)的支持,并且可以与 MIME 格式的邮件内容配合使用,允许发送包含附件、HTML 内容等...

    java mail 发邮件 demo程序

    这个“java mail 发邮件 demo程序”是为了演示如何使用JavaMail API发送电子邮件而创建的一个简单示例。在这个DEMO程序中,我们将深入探讨JavaMail API的核心概念以及如何构建一个实际的邮件发送功能。 首先,...

    Java mail发送邮件(源代码带注释)

    这个标题“Java mail发送邮件(源代码带注释)”表明我们将讨论如何使用JavaMail API来实现电子邮件的发送功能。描述提到,通过简单的赋值和测试,我们可以快速实现邮件发送,这表明提供的源代码应该是一个易于理解且...

    用java mail发邮件源码,支持多种邮局,支持单发和群发

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。这个源码可能包含了一套完整的解决方案,可以与多种邮局(如Gmail, Yahoo, Hotmail等)进行交互,并且支持单个收件人和...

    java mail发送邮件(源代码+注释)

    Java Mail 是一个强大的开源API,用于处理电子邮件的发送和接收。这个API允许开发者在Java应用程序中集成邮件功能,包括SMTP(简单邮件传输协议)和POP3(邮局协议第三版)等邮件服务协议。本教程将详细介绍如何使用...

    java mail 邮件发送

    以下是一个简单的Java Mail发送邮件的示例代码: ```java import javax.mail.*; import javax.mail.internet.*; public class EmailSender { public static void main(String[] args) throws Exception { // ...

    java mail 发送QQ邮件

    要使用Java Mail发送QQ邮件,首先需要在QQ邮箱设置中开启“POP3/SMTP/IMAP”服务,并获取授权码。授权码是QQ邮箱为第三方应用提供的一种安全验证方式,不同于普通密码。 ### 3. 添加依赖 在Java项目中,我们需要...

    Java Mail邮件发送源码下载

    Java Mail邮件发送是Java开发中常见的一项功能,用于在应用程序中发送电子邮件。Java Mail API提供了一个标准的接口,使得开发者可以方便地实现SMTP(简单邮件传输协议)和其他邮件协议的功能。下面将详细介绍Java ...

    Java Mail demo (仅发送邮件)

    下面是一个简化的Java Mail发送邮件的步骤,展示了一些关键API的使用: 1. 引入Java Mail依赖:首先确保项目中包含了Java Mail的相关库,通常通过Maven或Gradle等构建工具添加依赖。 2. 创建Properties对象:设置...

Global site tag (gtag.js) - Google Analytics