`
ykyfendou
  • 浏览: 408443 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过javaMail发送邮件,可设置多个收件人,多个附件

阅读更多

 

 

通过javaMail发送邮件,可设置多个收件人,发送多个附件:

附件名称为中文时无乱码现象

 

详见代码:

 

SendMailTest .java:

 

package com.test;

import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Multipart;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;


/**
 * 利用java.mail的邮件发送程序
 */

public class SendMailTest {
	
	
	public static void main(String[] args) {
		String title = "邮件主题";// 所发送邮件的标题
		String from = "javamail123@126.com";// 从那里发送
		String sendTo[] = { "testjavamail123@sohu.com", "2897416077@qq.com" };// 发送到那里
		// 邮件的文本内容,可以包含html标记则显示为html页面
		String content = "mail test!!!!!!<br><a href=#>aaa</a>";
		// 所包含的附件,及附件的重新命名
		String fileNames[] = { "D:\\test.txt,test.txt","D:\\test2.txt,哈哈.txt" };
		try {
			// MailSender mailsender = new MailSender();
			sendmail(title, from, sendTo, content, fileNames,
					"text/html;charset=gb2312");
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public static void sendmail(String subject, String from, String[] to,
			String text, String[] filenames, String mimeType) throws Exception {
		// ResourceBundle mailProps = ResourceBundle.getBundle("mail");
		// 可以从配置文件读取相应的参数
		Properties props = new Properties();

		String smtp = "smtp.126.com"; // 设置发送邮件所用到的smtp
		String servername = "javamail123@126.com";
		String serverpaswd = "hello123";

		javax.mail.Session mailSession; // 邮件会话对象
		javax.mail.internet.MimeMessage mimeMsg; // MIME邮件对象

		props = java.lang.System.getProperties(); // 获得系统属性对象
		props.put("mail.smtp.host", smtp); // 设置SMTP主机
		props.put("mail.smtp.auth", "true"); // 是否到服务器用户名和密码验证
		// 到服务器验证发送的用户名和密码是否正确
		Email_Autherticatorbean myEmailAuther = new Email_Autherticatorbean(
				servername, serverpaswd);
		// 设置邮件会话
		mailSession = javax.mail.Session.getInstance(props,
				(Authenticator) myEmailAuther);
		
		//设置debug打印信息
		mailSession.setDebug(true);
		
		// 设置传输协议
		javax.mail.Transport transport = mailSession.getTransport("smtp");
		// 设置from、to等信息
		mimeMsg = new javax.mail.internet.MimeMessage(mailSession);
		if (!from.isEmpty()) {

			InternetAddress sentFrom = new InternetAddress(from);
			mimeMsg.setFrom(sentFrom); // 设置发送人地址
		}

		InternetAddress[] sendTo = new InternetAddress[to.length];
		for (int i = 0; i < to.length; i++) {
			System.out.println("发送到:" + to[i]);
			sendTo[i] = new InternetAddress(to[i]);
		}

		mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO,
				sendTo);
		mimeMsg.setSubject(subject, "gb2312");

		MimeBodyPart messageBodyPart1 = new MimeBodyPart();
		// messageBodyPart.setText(UnicodeToChinese(text));
		messageBodyPart1.setContent(text, mimeType);

		Multipart multipart = new MimeMultipart();// 附件传输格式
		multipart.addBodyPart(messageBodyPart1);

		for (int i = 0; i < filenames.length; i++) {
			MimeBodyPart messageBodyPart2 = new MimeBodyPart();
			// 选择出每一个附件名
			String filename = filenames[i].split(",")[0];
			System.out.println("附件名:" + filename);
			String displayname = filenames[i].split(",")[1];
			// 得到数据源
			FileDataSource fds = new FileDataSource(filename);
			// 得到附件本身并至入BodyPart
			messageBodyPart2.setDataHandler(new DataHandler(fds));
			// 得到文件名同样至入BodyPart
			// messageBodyPart2.setFileName(displayname);
			// messageBodyPart2.setFileName(fds.getName());
			messageBodyPart2.setFileName(MimeUtility.encodeText(displayname));
			multipart.addBodyPart(messageBodyPart2);
		}
		mimeMsg.setContent(multipart);
		// 设置信件头的发送日期
		mimeMsg.setSentDate(new Date());
		mimeMsg.saveChanges();
		// 发送邮件
		transport.send(mimeMsg);
		transport.close();
	}

}

 

 

 

用户验证代码:

Email_Autherticatorbean.java:

package com.test;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class Email_Autherticatorbean extends Authenticator {
	private String m_username = null;
	private String m_userpass = null;

	public void setUsername(String username) {
		m_username = username;
	}

	public void setUserpass(String userpass) {
		m_userpass = userpass;
	}

	public Email_Autherticatorbean(String username, String userpass) {
		super();
		setUsername(username);
		setUserpass(userpass);

	}

	public PasswordAuthentication getPasswordAuthentication() {

		return new PasswordAuthentication(m_username, m_userpass);
	}
}

 

 

把这两个类放在web project中运行SendMailTest.java 即可测试使用。

 

具体方法调用方式见SendMailTest.java  main方法。

 

 

 

测试邮箱:

javamail123@126.com  pwd:hello123    smtp:smtp.126.com
testjavamail123@sohu.com  pwd:hello123
2897416077@qq.com    pwd:123456789   未开通smtp服务


注意:使用某个邮箱作为主机发送邮件的时候,需要开通这个邮箱 的smtp服务

 

分享到:
评论
1 楼 风过有声 2015-01-06  
使用某个邮箱作为主机发送邮件的时候,需要开通这个邮箱 的smtp服务

开通了 还是提示
Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25;

大神知道何解不

相关推荐

    javamail实现邮件发送(支持多接收人、多附件)

    然后,创建一个 `MimeMessage` 对象,它是邮件消息的容器,可以设置发件人、收件人、主题和正文: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your-email@...

    jsp/servlet javamail 发送邮件 可发送多个附件

    在这个场景下,我们讨论的是一个使用JSP和Servlet实现的邮件发送系统,该系统具备发送带有多个附件的功能。这个系统可能基于JavaMail API来实现邮件的发送,而JavaMail是一个强大的开源库,可以处理复杂的邮件服务...

    javamail发送邮件(带附件)

    最后,虽然这个例子只允许一次发送一个附件,但通过创建多个 `MimeBodyPart` 对象和一个 `MimeMultipart`,你可以轻松地添加多个附件。只需在循环中重复上述过程,将每个附件添加到 `Multipart`,然后设置 `...

    JavaMail发送邮件(文本、html、附件)

    - 创建`MimeMessage`实例,并设置发件人、收件人、主题和正文。 - 示例代码: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("from@example.com")); message...

    JavaMail实现邮件发送功能,可发送、抄送、密送多人,支持多附件的发送

    通过以上步骤,你就可以利用 JavaMail 实现功能完备的邮件发送了,包括向多个人发送邮件、设置抄送和密送,以及添加多个附件。注意,实际使用时,你需要根据你的邮件服务提供商调整相应的配置参数,例如对于其他邮箱...

    JavaMail发送邮件的例子

    3. `javax.mail.Message`:表示一个邮件对象,包含邮件的所有信息,如发件人、收件人、主题、正文等。 4. `javax.mail.internet.MimeMessage`:MIME(Multipurpose Internet Mail Extensions)邮件消息,扩展了标准...

    james和javamail实现邮件收发(带发送附件)

    设置发件人、收件人、抄送人、主题和正文内容。JavaMail API支持多种格式的正文,包括纯文本和HTML。 3. **添加附件**:如果需要发送附件,可以使用`MimeBodyPart`类创建一个包含附件的新部分,并将其添加到`...

    用javaMail发送邮件

    3. **创建邮件消息**:使用`Message`类实例化一个邮件对象,并设置必要的属性,如发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress(...

    使用JAVAMail代发邮件

    在 MailInfo 类中,我们定义了多个成员变量,用于存储邮件的各种信息。这些成员变量包括邮件服务器的主机名和端口号、邮件发送者的地址、邮件接收者的地址、邮件主题、邮件内容、邮件附件等。我们还定义了相应的 ...

    利用JavaMail发送邮件的实例,可以直接运行

    JavaMail 是一个开源的Java库,它为...通过扩展,你可以实现更复杂的功能,如发送HTML邮件、添加多个收件人、抄送人和密送人,以及发送带有附件的邮件。了解这些基本概念后,你可以根据需要调整代码以满足特定的需求。

    javamail发送邮件小程序,类以及写好,只要放包,下载一个就可以

    2. **Message**:`Message` 类表示一封邮件,它包含了邮件的所有内容,如发件人、收件人、主题、正文和附件等。开发者可以通过 `Message` 类的方法来设置和获取这些信息。 3. **MimeMessage**:`MimeMessage` 是 `...

    使用javaMail发送邮件

    这个对象将包含邮件的所有信息,如发件人、收件人、主题和正文: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("from@example.com")); message.setRecipients...

    javamail发送邮件实例

    可以设置发件人、收件人、主题和正文。`MimeMessage`支持多种格式的邮件内容,包括纯文本、HTML以及附件。 ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("from@...

    javamail发送邮件和附件一个例子,直接eclipse运行

    现在,我们可以创建一封新的`MimeMessage`对象,并设置发件人、收件人、主题和正文。 ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your-email@example.com"));...

    完整的javamail发送邮件源码

    `MimeMultipart`则用于组合多个`MimeBodyPart`,形成一个多部分的邮件,支持HTML格式的正文和多个附件。 7. SMTP 协议:JavaMail通常使用SMTP发送邮件,SMTP是一种基于TCP/IP的协议,用于在邮件客户端和邮件服务器...

    常规JavaMail 邮件发送实用类

    1. `sendEmail(String from, String to, String subject, String body)`: 这个方法用于发送简单的文本邮件,参数分别为发件人、收件人、邮件主题和邮件正文。 2. `sendHtmlEmail(String from, String to, String ...

    JavaMail发送带附件的邮件

    4. **设置邮件信息**:包括发件人、收件人、主题和正文。 ```java message.setFrom(new InternetAddress("from@example.com")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("to@...

    javamail发送html邮件

    3. **创建 MimeMessage 对象**:通过 `Session` 创建 `MimeMessage` 对象,并设置邮件的主题、发件人、收件人等。 4. **设置 HTML 内容**:使用 `MimeMultipart` 将 HTML 内容设置到 `MimeMessage` 中。 5. **发送...

Global site tag (gtag.js) - Google Analytics