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

一段群发邮件的代码

阅读更多
import javax.mail.*;
import javax.mail.internet.*;
import java.sql.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.activation.*;

public class MailAccess {

	public static void main(String[] args) {

		ResultSet rs = null;
		int sendCount = 1;
		String from = "brue";
		String to = null;
		String fromname = "发件人名称";
		String subject = "关于XXX的通知";
		String type = "text/html";
                      //附件的本地地址
		String[] fileAttachment = { "d:\\通知1.gif", "d:\\通知2.gif","d:\\报送表.doc" };
                     //群发邮件的地址在access数据库中,读取并循环发送!
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			String url = "jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=d:\\email.mdb";
			Connection con = DriverManager.getConnection(url);
			Statement stmt = con.createStatement();
			String strSQL = "select email from email";
			rs = stmt.executeQuery(strSQL);
			while (rs.next()) {
				to = rs.getString("email");
				StringBuffer str = new StringBuffer();
				str.append("<P>有关成员单位:<BR>全国高校毕业生就业网络联盟成立以来,…………");
 				str.append("招聘信息可免费在www.myjob.edu.cn和www.ncss.org.cn发布。</P>");
				String message = str.toString();
				System.out.println(to);
				sendMail(from, fromname, to, subject, message, fileAttachment,type, sendCount++);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

 

	public static void sendMail(String from, String fromname, String to,
			String subject, String message, String[] fileAttachment,
			String type, int sendCount) throws Exception {
		// 以下是发送邮件的代码
		InternetAddress[] address = null;
		String mailserver = "mail.myjob.edu.cn";
		boolean sessionDebug = false;
		try {

			// 设定所要用的Mail 服务器和所使用的传输协议
			java.util.Properties props = System.getProperties();
			props.put("mail.host", mailserver);
			props.put("mail.transport.protocol", "smtp");
			props.put("mail.smtp.auth", "true");// 指定是否需要SMTP验证

			// 产生新的Session 服务
			javax.mail.Session mailSession = javax.mail.Session
					.getDefaultInstance(props, null);
			mailSession.setDebug(sessionDebug);
			Message msg = new MimeMessage(mailSession);

			// 设定发邮件的人
			msg.setFrom(new InternetAddress(from, MimeUtility.encodeText(
					fromname, "gb2312", "b")));

			// 设定收信人的信箱
			address = InternetAddress.parse(to, false);
			msg.setRecipients(Message.RecipientType.TO, address);

			// 设定信中的主题
			msg.setSubject(subject);

			// 设定送信的时间
			msg.setSentDate(new java.util.Date());

			Multipart mp = new MimeMultipart();
			MimeBodyPart mbp = new MimeBodyPart();

			// 设定邮件内容的类型为 text/plain 或 text/html
			mbp.setContent(message, type + ";charset=GB2312");
			mp.addBodyPart(mbp);

			// 附件部分
			for (int i = 0; i < fileAttachment.length; i++) {
				MimeBodyPart messageBodyPart = new MimeBodyPart();
				FileDataSource fds = new FileDataSource(fileAttachment[i]);
				messageBodyPart.setDataHandler(new DataHandler(fds));
				//支持中文文件名
				messageBodyPart.setFileName(MimeUtility.encodeWord(fds
						.getName(), "GB2312", null));
				mp.addBodyPart(messageBodyPart);
			}
			msg.setContent(mp);

			Transport transport = mailSession.getTransport("smtp");
		               //邮箱用户名和密码
			transport.connect(mailserver, "username", "password");
			transport.sendMessage(msg, msg.getAllRecipients());
			transport.close();
			System.out.println("成功发送 " + sendCount + " 封");

		} catch (MessagingException mex) {
			mex.printStackTrace();
			System.out.println(mex);
		}
	}

  

   上边群发的原理是使用了while循环调用sendMail方法,虽然能实现,但是更简单、更实用的方法如下所示:
    取得必要的Transport对象并调用SendMessage()发送每一个邮件。注意在调用之间设置或改变接收者。

  

		Message message = …;
			Transport t = session.getTransport("smtp");
			t.connect();
			message.setRecipient(Message.RecipientType.TO,recipient1);
			t.sendMessage(message,recipient);
			message.setRecipient(Message.RecipientType.TO,recipient2);
			t.sendMessage(message,recipient);
			message.setRecipient(Message.RecipientType.TO,recipient3);
			t.sendMessage(message,recipient);
			t.close();  

 

   程序也是从网上参考着凑出来的, 有什么不足之处,还望大家不吝赐教!

分享到:
评论

相关推荐

    VB 邮件群发代码(很有参考价值)

    此外,考虑到群发邮件的效率和避免被认定为垃圾邮件,代码可能还包含了以下策略: - **批量发送**:将收件人列表拆分成小批次,每次只发送一部分,以减轻服务器压力。 - **延迟发送**:在每次发送邮件之间插入一定...

    asp邮件群发源代码说明

    在这个场景中,"asp邮件群发源代码"指的是使用ASP编写的一段程序,能够自动发送大量邮件给指定的收件人列表,常用于营销、通知或客户服务等目的。 在ASP邮件群发源代码中,主要涉及以下几个关键知识点: 1. **SMTP...

    EMail群发拆分源代码

    总的来说,这段VB.NET源代码提供了一种实现邮件群发但避免被视为垃圾邮件的方法,对于学习邮件发送技术或者需要此类功能的开发者来说,具有很高的实用价值。通过分析和理解这段代码,开发者不仅可以学习到如何使用VB...

    excel 群发邮件例子

    在IT行业中,Excel经常被用来处理大量数据,而群发邮件是提高工作效率的重要手段之一。本例子主要介绍如何利用Excel和JMail插件实现邮件的批量发送,这在企业内部沟通、营销活动或者日常工作中非常实用。下面我们将...

    邮件群发C#项目代码

    例如,每次发送后暂停一段时间,或者在发送失败后根据错误类型决定是否重试。 8. **邮件模板**:为了简化邮件内容的创建,可以使用模板引擎(如NLog或String.Format)生成动态邮件内容。这样可以方便地更新邮件格式...

    群发邮件_python邮件_邮件群发_邮箱群发文件_邮箱群发文件_源码.zip

    本资源"群发邮件_python邮件_邮件群发_邮箱群发文件_邮箱群发文件_源码.zip"提供了一个关于如何使用Python进行邮件群发的示例代码,帮助开发者实现高效的邮件群发功能。 首先,Python中的`smtplib`库是用于发送邮件...

    C# 编写的邮件无敌群发(绝对管用)

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面...在"sendMail"这个压缩包文件中,可能包含了实现这些功能的源代码示例,通过学习和理解这段代码,你能够更好地掌握如何在C#环境中编写邮件发送程序。

    易语言源码取QQ好友列表并群发邮件.rar

    【标题】"易语言源码取QQ好友列表并群发邮件.rar" 描述了一段使用易语言编程实现的代码,其功能是获取QQ好友列表,并对这些好友进行群发电子邮件的操作。这个压缩包包含了易语言的源代码以及可能用到的相关模块和...

    .net 邮件群发

    此段代码首先创建了一个字符串列表`listr`,用于存储待发送邮件的所有收件人邮箱地址。然后,通过循环遍历这个列表,对每个地址调用`BindSendMail`方法来发送邮件。 #### 2. 邮件发送逻辑 ```csharp public void ...

    阿西在线邮件群发系统

    阿西在线邮件群发系统是一款专门用于批量发送电子邮件的软件工具,主要服务于企业和个人,以提高他们的邮件营销效率。在互联网营销中,邮件群发是一种常见的沟通方式,它能够帮助企业迅速传达产品信息、活动通知或者...

    excel 批量发送电子邮件代码

    ### Excel 批量发送电子邮件代码知识点解析 #### 一、代码功能概述 本代码段主要实现了利用Excel VBA(Visual Basic for Applications)结合Outlook自动批量发送带有附件的电子邮件的功能。用户只需在Excel表格的第...

    phpmailer群发

    例如,每发送完一封邮件后,程序暂停一段时间再继续发送下一封,这样可以控制邮件发送速度,避免被邮件服务器阻止。 6. **错误处理**:在群发过程中,可能会遇到收件人邮箱无效、网络问题等情况,PHPMailer提供错误...

    ASP源码—简易邮件群发程序ASP.zip

    ASP(Active Server Pages)是一种微软开发的服务器端脚本环境,用于创建...通过研究这段代码,开发者不仅可以学习到ASP的基本语法和邮件发送的流程,还可以借鉴其中的设计模式和错误处理策略,提升自己的Web开发技能。

    易语言源码易语言QQ邮箱群发源码.rar

    此压缩包"易语言源码易语言QQ邮箱群发源码.rar"包含的是使用易语言编写的一个QQ邮箱群发程序的源代码。下面,我们将详细探讨这个程序可能涉及的知识点。 首先,我们要了解易语言的基本语法和结构。易语言采用“所见...

    邮件群发大站协议post源码-易语言

    标题 "邮件群发大站协议post源码-易语言" 提供了我们即将讨论的核心主题:这是一段使用易语言编写的源代码,用于实现邮件群发功能,具体通过POST方法与服务器通信。POST方法是HTTP协议中的一个重要部分,常用于向...

    Excel 批量发送邮件

    这段代码创建了一个Outlook对象,然后对选定范围内的每一行(通常为员工邮箱地址所在的列)执行循环。邮件的收件人、主题、正文内容以及附件都可以根据实际需求进行修改。 在实际应用中,你可能需要根据工资单数据...

    双类型邮件群发-易语言

    标签“网络相关源码”表明这是一段与网络通信相关的程序代码。这通常涉及到TCP/IP协议、SMTP(简单邮件传输协议)或者IMAP/POP3(用于接收邮件的协议)等网络协议。源码意味着我们可以看到并理解程序内部的工作机制...

    Spring 使用163发邮件带附件

    在提供的标签"源码"和"工具"中,我们可以推测这篇博文可能包含了一段示例代码来演示如何在Spring中使用163邮箱发送带有附件的邮件。可能还会讨论一些常用的工具或库,如JavaMail API,以及可能遇到的问题和解决方案...

    接单王即时通讯代码

    网人互联接单王是一款备受受好评的即时通讯系统,接单王按钮是一个电子标签,可被运用在企业的网站、网络广告、邮件签名、网上论坛等处。...接单王使用方便,仅需在您的网页上增加一段代码,即可免费轻松使用

Global site tag (gtag.js) - Google Analytics