`

两种JavaMail发送邮件例子

 
阅读更多

第一种写法:

public static void main(String[] args) throws Exception {
		// 第一种写法:
		Properties props = new Properties();
		props.setProperty("mail.smtp.host", "smtp.163.com");
		props.setProperty("mail.debug", "true");
		props.setProperty("mail.smtp.auth", "true");
		props.setProperty("mail.transport.protocol", "smtp");
		Session session = Session.getInstance(props);
		Message message = new MimeMessage(session);
		message.setFrom(new InternetAddress("cmjcmj8080@163.com"));
		message.setText("测试邮件!请勿回复!");
		Transport transport = session.getTransport();
		transport.connect("smtp.163.com", 25, "cmjcmj8080@163.com", "****");
		transport.sendMessage(message, new Address[] { new InternetAddress(
				"47800089@qq.com") });
		transport.close();
    }

 

 或者

   

	public static void main(String[] args) throws Exception {
                                 Properties props = new Properties();
		 props.setProperty("mail.smtp.host", "smtp.163.com");
		 // 必须有这项设置
		 props.setProperty("mail.smtp.auth", "true");
		 props.setProperty("mail.debug", "true");

		 // Session管理与stmp的链接信息
		 Session session = Session.getDefaultInstance(props,
		 new Authenticator() {
		 protected PasswordAuthentication getPasswordAuthentication() {
		 return new PasswordAuthentication("cmjcmj8080@163.com",
		 "*******");
		 }
		 });
		
		 MimeMessage msg = new MimeMessage(session);
		 try {
		 msg.setFrom(new InternetAddress("cmjcmj8080@163.com"));
		 msg.addRecipients(Message.RecipientType.TO,
		 "chenminjie@xinnet.com,47800089@qq.com");
		 msg.setSubject("测试--群发", "UTF-8");
		 msg.setSentDate(new Date());
		 msg.setText("你好,这是一封测试邮件。收到请勿回复", "UTF-8");
		
		 // 使用静态的方法发送信息
		 // Transport.send(msg,new InternetAddress[]{new
		 // InternetAddress("lianyumoshen@sina.com")});
		 Transport.send(msg);
		 } catch (MessagingException e) {
		 e.printStackTrace();
    }		 
 }

 

其中javamail Session.getDefaultInstance和getInstance的区别:

 

    如果想要同时使用两个帐号发送javamail,比如使用1@a.com发送1#邮件,使用2@a.com发送2#邮件,这时候,你就需要同时创建两个java.mail.Session对象。但是如果你仍然使用Session.getDefaultInstance创建session对象的话,你会发现,第二个username:2@a.com创建的session永远都和第一个一样,这是为什么呢?因为,getDefaultInstance是真正单例模式,而且,里面的username和password属性是final型的,无法更改。所以,你会发现两封email都是由1@a.com发出来的。所以这个时候你要使用javax.mail.Session.getInstance()方法来创建session对象。

 

Transport 方法 send 和 sendMessage 之间有什么区别?
   send() 方法是一个静态方法,可以直接使用,而不需要 Transport 对象的实例。它用于常见、简单的场合,比如使用默认传输发送单条消息。从内部讲,send() 方法首先调用消息上的 saveChanges() 方法。然后创建合适的新 Transport 对象,调用 Transport 的 connect() 方法,调用 Transport 的 sendMessage() 方法来实际发送消息,接着调用 Transport 的 close() 方法,最后丢弃 Transport 对象的新实例,并由垃圾收集器收集(实际上,还有比那更加复杂的,但那是一般的想法)。
  如你可以看到,静态 send() 便利 (convenience) 方法是建立在更加通用的每实例 sendMessage() 方法的基础上的。有许多原因可以让应用程序直接使用 sendMessage() 方法。最常见的原因是为了通过在单个连接期间发送多条消息 来提高性能,或者为了手动治理连接以提供验证信息。当使用 sendMessage() 方法时,产生的最常见错误是,忘记在要发送的消息上调用 saveChanges() 方法。

 

 

第2种,结合spring

	public static void main(String[] args) throws AddressException, MessagingException {
		JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
		mailSender.setHost("mail.xinnet.com");
		mailSender.setUsername("*****@xinnet.com");
		mailSender.setPassword("*****");
		Properties prop = new Properties();
		prop.put("mail.debug", "true");
		prop.put("mail.smtp.auth", "true");
		prop.put("mail.smtp.timeout", "25000");
		mailSender.setJavaMailProperties(prop);
		MimeMessage mailMessage = mailSender.createMimeMessage(); 
	                MimeMessageHelper mail = new MimeMessageHelper(mailMessage); 
		mail.setFrom("******@xinnet.com");
		mail.setTo("*****@xinnet.com");
		mail.setSubject(" 测试spring Mail");
		mail.setText("hello!!spring<br/> html Mail",true);
		mailSender.send(mailMessage);
		System.out.println(" 邮件发送成功.. ");
	}

 

下一篇贴一些网上找来的一些JavaMail的常见问题

 

分享到:
评论

相关推荐

    JavaMail发邮件原代码例子

    压缩包中的文件名“JavaMail发邮件原代码例子”可能包含的就是一个完整的Java类,里面包含了上述的代码实现,你可以直接运行这个示例来发送邮件。在实际应用中,可能还需要处理附件、HTML格式的邮件内容、多收件人等...

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

    在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种常见的技术,它们常用于构建动态网页和处理HTTP请求。在这个场景下,我们讨论的是一个使用JSP和Servlet实现的邮件发送系统,该系统具备发送带有多个附件的...

    Spring 3.x企业应用开发实战 附录 A - JavaMail 发送邮件

    ### Spring 3.x企业应用开发实战之JavaMail发送邮件知识点详解 #### 一、JavaMail基础知识的快速学习 ##### 1.1 JavaMail概述 JavaMail是Java领域中最为知名的邮件解决方案之一,由Sun Microsystems(现已被...

    javaMail 发送邮件

    这个例子专注于通过JavaMail发送163邮箱的邮件,但原理适用于其他邮箱服务,只需进行适当的配置调整。下面我们将详细探讨JavaMail的核心概念、如何配置以及如何实现邮件发送。 1. **JavaMail API介绍** JavaMail ...

    JavaMail邮件开发详解

    接下来,我们将通过一个具体的例子来展示如何使用 JavaMail API 发送电子邮件。 **示例代码框架**: 1. **初始化Session对象**:创建一个 Session 对象,并设置必要的属性,如 SMTP 服务器地址。 2. **创建...

    javamail架包、例子

    4. **POP3 和 IMAP 协议**:JavaMail 支持 POP3(Post Office Protocol v3)和 IMAP(Internet Message Access Protocol)协议,这两种协议分别用于下载和在线访问邮件服务器上的邮件。 5. **身份验证**:通过 `...

    javamail例子以及jar包

    让我们深入了解一下如何使用JavaMail发送邮件: 1. **配置Properties对象**:首先,你需要创建一个 `Properties` 对象来设置邮件服务器的属性,如SMTP服务器地址、端口号、是否使用SSL/TLS等。 2. **创建Session...

    java发邮件需要的jar和一个发邮件的例子,适用于jdk1.5

    Java发送邮件是通过JavaMail API实现的,这个API包含了处理电子邮件的各种功能,如创建、发送、接收邮件等。在Java中,为了发送邮件,我们需要两个关键的库:`mail.jar`和`activation.jar`,这两个库在提供的压缩包...

    java 邮件开发 邮件的发送 邮件的接受 和带附件的邮件发送

    要发送邮件,你需要导入`javax.mail`和`javax.mail.internet`这两个核心包。以下是一个简单的邮件发送示例: ```java Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail...

    JavaMail jar包For JDK6.0

    JavaMail是Java编程语言中用于处理邮件服务的API,它为开发者提供了在应用程序中发送、接收和管理电子邮件的能力。在JavaMail 1.6.2版本中,针对JDK 6.0的环境,通常会包含两个核心的jar包:`mail.jar`和`activation...

    JavaMail使用实例及所需jar包

    一旦设置完成,你就可以直接运行实例代码,看到JavaMail发送邮件的过程。 总的来说,这个JavaMail使用实例及所需jar包的教程是学习Java邮件编程的宝贵资源。通过实践这些例子,初学者能够快速掌握JavaMail API的...

    java定时发送邮件

    其次,实现定时任务在Java中通常有两种常见方式:一是使用`java.util.Timer`和`TimerTask`类,二是使用`java.util.concurrent.ScheduledExecutorService`。前者适合简单的定时任务,而后者则更强大,支持更复杂的...

    JavaMail需要的两个Jar包

    JavaMail 是一个强大的开源库,它为Java程序员提供了一种简单、标准的方式来处理电子邮件。在Java应用程序中,如果你需要发送或接收电子邮件,JavaMail是一个必不可少的工具。这个压缩包包含了两个关键的Java类库...

    发送电子邮件验证代码

    本例子是用 JavaMail 来发送邮件的最简单的例子,需要认证才能正常发送邮件。 收件人 Email: &lt;input type="text" name="recipients"&gt;&lt;br/&gt; 发件人 Mail: 邮件标题 ...

    java发送邮件(jdk1.4和jdk1.5)

    下面将详细介绍这两个版本中使用Java发送邮件的关键知识点。 1. **JavaMail API**: JavaMail API是Java平台上的一个开源库,用于处理电子邮件。它提供了一组接口和类,使得程序员能够构建邮件客户端和服务器端的...

    自己写的用Java来发送接收Email的例子

    JavaMail API也支持这两种协议,使得用户可以编写程序来接收邮件。 4. **发送邮件**: 发送邮件涉及的主要步骤包括创建`Session`对象(配置邮件服务器信息),创建`MimeMessage`对象(构建邮件内容),以及使用`...

    java发送邮件jar

    这两个JAR文件包含了JavaMail API,它是Java平台中用于发送和接收电子邮件的标准API。让我们深入了解一下这两个库及其在Java邮件处理中的作用。 首先,`javax.mail.jar`是JavaMail的核心库,它提供了邮件服务的基本...

    javamail的jdk打包

    以下是一个简单的示例,展示了如何使用JavaMail发送一封简单的文本邮件: ```java import javax.mail.*; import javax.mail.internet.*; public class SimpleEmailSender { public static void main(String[] ...

    excel解析及发送邮件的小例子

    5. 邮件发送:利用JavaMail API实现SMTP邮件服务,发送邮件通知。 这个项目作为一个可运行实例,对于学习和理解这些技术的实践应用非常有价值。开发者可以在此基础上扩展功能,例如添加错误处理、优化性能或增加...

    传智播客邮件开发例子源码

    itcast javamail demo 传智播客邮件开发源码 java实现两种发邮件方式,1、java代码取的session;2、jndi配session。 讲解了邮件收发原理、邮件文件的讲解、实现了简单邮件和复杂邮件的发送

Global site tag (gtag.js) - Google Analytics